🍬 博主介绍
👨?🎓 博主介绍:大家好,我是 hacker-routing ,很高兴认识大家~
?主攻领域:【渗透领域】【应急响应】 【python】 【VulnHub靶场复现】【面试分析】
🎉点赞?评论?收藏 == 养成习惯(一键三连)😋
🎉欢迎关注💗一起学习👍一起讨论??一起进步📝文末有彩蛋
🙏作者水平有限,欢迎各位大佬指点,相互学习进步!
目录
代码审计是指对源代码进行检查,寻找代码存在的脆弱性,这是一项需要多方面技能的技术,作为一个高级软件开发者,代码安全作为你的日常工作中非常重要的一部分,因为大部分代码从语法和语义上来说是正确的,你必须依赖你的知识和经验来完成工作。每个团队都将获得一个代码列表,查看每一段代码然后回答答题卡里的问题。
本任务素材清单:答题模板上提供的代码片段。
请按要求完成该部分的工作任务。
任务3:代码审计 | |
---|---|
任务编号 | 任务描述 |
1 | 存在脆弱性的代码行数 |
2 | 代码可能会受到的网络安全攻击类型 |
3 | 结合代码简述漏洞产生的原因 |
import urllib.parse
import socketserver
from http.server import SimpleHTTPRequestHandler
class MyHandler(SimpleHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/html')
self.end_headers()
def do_GET(self):
print("Got GET request: %s" % self.path)
uri_c = urllib.parse.urlparse(self.path).path
print('cmd === %s' % uri_c)
try:
with open(uri_c, 'rb') as file:
self._set_headers()
self.wfile.write(file.read())
except IOError:
self.send_response(404)
self.end_headers()
self.wfile.write(b'File not found')
def start_server():
httpd = socketserver.TCPServer(("0.0.0.0", 8090), MyHandler)
print('Starting httpd...')
httpd.serve_forever()
if __name__ == "__main__":
start_server()
第15行
self.wfile.write(file.read())
任意文件读取
第11、12行接受来自用户的请求,并分离URL参数,将其赋值给uri_c,第14、15行,将uri_c变量作为参数进行文件读取,最终文件读取整个逻辑可被用户自由操控导致任意文件读取漏洞