wtorek, 18 lutego 2014

JS:Clickjack-A [Trj], JS/Agent.NKW trojan na stronie - Rozwiązanie

Ten Trojan dołącza się zazwyczaj do pliku php, jako skrypt js
U mnie wystąpił w templetce modułu joomla inowslider.
Usunięcie:

1. Otwórz \modules\mod_inowslider\tmpl\default.php

2. Poszuka i usuń skrypt wyglądający mniej więcej tak :
<script language="JavaScript">
function dnnViewState()
{
var a=0,m,v,t,z,x=new Array('xxxxxx'),l=x.length;while(++a<=l){m=x[l-a];
t=z='';
for(v=0;v<m.length;){t+=m.charAt(v++);
if(t.length==2){z+=String.fromCharCode(parseInt(t)+25-l+a);
t='';}}x[l-a]=z;}document.write('<'+x[0]+' '+x[4]+'>.'+x[2]+'{'+x[1]+'}</'+x[0]+'>');}dnnViewState();
</script> 


3.Na końcu pliku zlokalizuj i usuń ten kod.
<p class="dnn">By A <a href="http://www.autson.com/" title="web design company">Web Design</a></p>

4.Po zapisaniu usunąłeś trojana z modułu, możesz jeszcze przeskanować plik dla pewności antywirusem np: Avastem, Nodem

piątek, 22 marca 2013

Set Application Run As Admin

Dzisiaj potrzebowałem funkcji do ustawienia instalowanej aplikacji w tryb uruchomienia jako administrator - oto ona:


export prototype BOOL SetRunAsAdmin(STRING, BOOL);
Parametry funkcji:
  • szFile - nazwa pliku
  • bLog - czy zapisywać do logu
function BOOL SetRunAsAdmin(szFile, bLog)
#define UKEYLAYERS "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\AppCompatFlags\\Layers"
#define DATA "RUNASADMIN"
string szName, sKey;
LIST listSubKeys;
number nReturn;
int i;
begin
 if (bLog) then WriteLog(0,"- Dodanie praw administratora do uruchomienia pliku: "+szFile); endif;
 
 //Przestaw rejestr na 64 bity
 if (SYSINFO.bIsWow64!=0) then REGDB_OPTIONS = REGDB_OPTIONS | REGDB_OPTION_WOW64_64KEY;  endif;
 
 szName = szFile;
 RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
 if (!RegDBKeyExist(UKEYLAYERS)) then
   if (bLog) then WriteLog(1," - brak klucza rejestru "+UKEY); endif;
   if (SYSINFO.bIsWow64!=0) then REGDB_OPTIONS = REGDB_OPTIONS &amp; ~REGDB_OPTION_WOW64_64KEY;  endif;  
   return FALSE;
 endif;
 
 //Na istniejącym kluczu;
 listSubKeys  = ListCreate(STRINGLIST);
 nReturn = RegDBQueryKey(UKEYLAYERS, REGDB_NAMES, listSubKeys );
 if (nReturn=0) then
  if (ListCount(listSubKeys)&gt;0) then        
   ListSetIndex(listSubKeys,LISTFIRST);
    for i=0 to ListCount(listSubKeys)-1                  
     ListCurrentString ( listSubKeys, sKey );                       
     if (sKey==szName) then
      if (bLog) then WriteLog(1," - klucz ustawien już istnieje"); endif;
      RegDBSetKeyValueEx(UKEYLAYERS, szName, REGDB_STRING, DATA, -1);
      if (SYSINFO.bIsWow64!=0) then REGDB_OPTIONS = REGDB_OPTIONS &amp; ~REGDB_OPTION_WOW64_64KEY; endif;  
      return TRUE;        
      endif;
     
     ListSetIndex ( listSubKeys, LISTNEXT );
    endfor;  
  endif;      
 endif;
  
  //Stworz nowy
  nReturn =  RegDBSetKeyValueEx(UKEYLAYERS, szName, REGDB_STRING, DATA, -1);
  if (nReturn==0) then
   if (bLog) then WriteLog(1," - prawa administratora dodane"); endif;
   if (SYSINFO.bIsWow64!=0) then REGDB_OPTIONS = REGDB_OPTIONS &amp; ~REGDB_OPTION_WOW64_64KEY; endif;   
   return TRUE;
  else
   if (bLog) then WriteLog(1," - nie dodano praw administratora"); endif;
   if (SYSINFO.bIsWow64!=0) then REGDB_OPTIONS = REGDB_OPTIONS &amp; ~REGDB_OPTION_WOW64_64KEY; endif;   
   return FALSE;   
  endif;
end;

poniedziałek, 9 lipca 2012

Pobranie ścieżki DocumentRoot z konfiguracji Apache w InstallShield - Get DocumentRoot from Apache Config File

Niedawno potrzebna była mi kolejna funkcja zwracająca ścieżkę do DocumentRoot z konfiguracji serwera Apache, oto ona:
Nagłówek funkcji

export prototype BOOL GetApacheDocRoot(STRING /*plik konfiguracyjny Apache*/, BYREF STRING /*DocRootPath*/, BOOL /*bLog*/);

Parametry funkcji:
  • ścieżka wraz z plikiem konfiguracyjnym np; httpd.conf
  • referencja do zmiennej przechowująca ścieżkę
  • bLog - czy zapisywać do logu
Zwracane wartość: true/false

A oto ciało funkcji:

function BOOL GetApacheDocRoot(szApacheConfigFile, svApacheDocRoot, bLog)
BOOL bResult;
LIST lsApache;
string szLine,szNewLine, szDocRoot;
int i;
begin
 if (bLog) then WriteLog(0,"* Pobieranie scieżki do DocumentRoot z konfiguracji Apache..."); endif;
 bResult = FALSE;
 if (Is(FILE_EXISTS,szApacheConfigFile)) then
  lsApache = ListCreate(STRINGLIST);
  ListReadFromFile ( lsApache, szApacheConfigFile ); //Odczyt Apache Conf
  if (ListCount(lsApache)>0) then       
   ListSetIndex(lsApache,LISTFIRST);        
   for i=0 to ListCount(lsApache)-1      
    ListCurrentString ( lsApache, szLine );
    szLine = StrTrim(szLine);
    if (StrFind(szLine,"DocumentRoot")>=0) then
     szNewLine = szLine;
     szNewLine = StrTrim(szNewLine);
     if (StrFind(szNewLine,"DocumentRoot")=0) then
      StrSub(szDocRoot,szNewLine, StrLength("DocumentRoot")+1,     StrLength(szNewLine));
      szDocRoot = StrTrim(szDocRoot);            
      bResult = TRUE;    
      if (bLog) then WriteLog(2,"DocumentRoot : "+szDocRoot); endif;
      StrReplace(szDocRoot,"\"","",0);
      StrReplace(szDocRoot,"/","\\",0);
      StrRemoveLastSlash(szDocRoot);
      svApacheDocRoot = szDocRoot;
     endif;  
    endif;
    ListSetIndex(lsApache,LISTNEXT);
   endfor;
  endif;  
 endif;

 ListDestroy(lsApache);

 return bResult;
end;

czwartek, 5 lipca 2012

Pobranie ścieżki instalacyjnej zainstalowanego produktu po przez GUID - Get Install location by Product GUID in InstallShield

Przy tworzeniu aktualizacji czasami zachodzi potrzeba odczytania ścieżki instalacyjnej zainstalowanego wcześniej produktu. Jeżeli mamy GUID poprzedniego produktu możemy do tego wykorzystać poniższą funkcję. Funkcja odczytuje wartości rejestru zainstalowanych produktów.
Parametry:
  • GUID  - GUID zainstalowanego  produktu\
  • Path - odczytana ścieżka
  • Name - odczytana nazwa produktu
  • Version - odczytana wersja zainstalowanego produktu
  • bLog - zapis do loga 

Funkcja zwraca true/false, wartość true w przypadku pozytywnego odczytania ścieżki instalacyjnej.

Nagłówek funkcji

export prototype BOOL GetInstallLocationGUID(STRING, /*GUID*/ BYREF STRING /*Path*/, BYREF STRING /*Name*/, BYREF STRING /*Version*/, BOOL /*bLog*/); 

Ciało funkcji
function BOOL GetInstallLocationGUID(szGUID, svPath, svName, svVersion, bLog)
#define UKEY  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall"
string RegPath, sKey, sValue, sData, sFolder;   
number nReturn, nResult, nType, nSize, i, nData;
BOOL bResult;
LIST   listSubKeys;
begin
  bResult = FALSE;
  
  if (bLog) then  WriteLog(1,"Odczyt ścieżki do zainstalowanego produktu"); endif;   
   
  listSubKeys  =  ListCreate(STRINGLIST);   
  RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE);
  nReturn = RegDBQueryKey(UKEY, REGDB_KEYS, listSubKeys );
  if (nReturn=0) then
   ListGetFirstString ( listSubKeys, sKey );
   if (ListCount(listSubKeys)>0) then        
       
     ListSetIndex(listSubKeys, LISTFIRST);
     for i=0 to ListCount(listSubKeys)-1
       ListCurrentString ( listSubKeys, sKey ); 
       if (sKey==szGUID) then                                 
         if (bLog) then  WriteLog(2,"- znaleziono zainstalowany produkt "+szGUID); endif;   
                
         RegPath=UKEY+"\\"+sKey;
         sFolder=sKey;
         if (RegDBKeyExist(RegPath)==1) then                      
                         
            sKey = RegPath;                            
            sValue="DisplayName";
            nType = REGDB_STRING;
            if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
              svName = sData;
              if (bLog) then  WriteLog(3,"- nazwa produktu "+sData); endif;   
            else
              svName = "";
              if (bLog) then WriteLog(3,"- brak klucza nazwy produktu "); endif;   
            endif;                         
                                                   
            sValue="DisplayVersion";                         
            if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
             svVersion = sData;
             if (bLog) then  WriteLog(3,"- wersja produktu "+sData); endif;   
            else
             svVersion = "";
             if (bLog) then  WriteLog(3,"- brak klucza wersji produktu "); endif;   
            endif;
                         
            sValue="InstallLocation";                                   
            if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
              if (bLog) then  WriteLog(3,"- ścieżka instalacji "+sData); endif;          

              svPath = sData;
              bResult = TRUE;
            else
              if (bLog) then  WriteLog(3,"- brak klucza ścieżki instalacyjne "); endif;   
            endif;
                        
            sValue="InstallDate";                                   
            if (RegDBGetKeyValueEx( sKey, sValue, nType, sData, nSize )==0) then
              if (bLog) then  WriteLog(3,"- data instalacji "+sData); endif;                                
              bResult = TRUE;
            else
              if (bLog) then  WriteLog(3,"- brak klucza daty instalacji "); endif;   
            endif;
          endif;
        endif;   
                 
        ListSetIndex(listSubKeys, LISTNEXT);
      endfor;
         
    else
      if (bLog) then  WriteLog(2,"- brak listy zainstalowanych produktow GUID"); endif;   
    endif;
     
   else
     if (bLog) then  WriteLog(2,"- błąd odczytu rejestru"); endif;   
   endif;           

  return bResult;         
end;


Oprócz ścieżki instalacyjnej (Path) , funkcja zwraca nazwę produktu (Name) i wersję (Version)